gpt4 book ai didi

c++ - 来自另一个类中的类的引用数组

转载 作者:太空宇宙 更新时间:2023-11-04 13:59:28 25 4
gpt4 key购买 nike

我正在编写一个将十进制数转换为二进制、八进制和十六进制的程序。我在不同的类中进行每次转换,但我想使用存储在第一类中的数组 (bin[31]) 中的数字的二进制形式。有没有办法在我的其他类(class)中使用该数组?我的老师说我应该使用引用资料,但我不知道该怎么做。我的文件是:

二进制.h

#ifndef BINARY_H
#define BINARY_H




class Binary{

public:

int num_;
static int bin[31];
int i;
int x;


Binary();

void Set(int temp);
int Get();
void ChangeToBinary();
void ChangeToBinaryComplement();
void TwoComplement();
void PrintBinary();

~Binary();



};
# endif

二进制.cpp

#include <stdio.h>
#include <iostream>
#include "Binary.h"
#include "Octal.h"

using namespace std;

Binary::Binary(){

}

void Binary::Set(int temp){
num_ = temp;
}

int Binary::Get(){
return num_;
}

void Binary::ChangeToBinary(){

x = 1;
for (i=0;i<30;i++){
x*=2;
}

for (i = 0; i<31;i++){
if (num_ -x >= 0){
bin[i] = 1;
num_ = num_ -x;
}
else{
kettes[i] = 0;

} x=x/2;
}
}

void Binary::ChangeToBinaryComplement(){

for (i=0;i<31;i++){
if (bin[i] ==0){
bin[i] = 1;
}
else {
bin[i] = 0;
}
}
}

void Binary::TwoComplement(){
for(i=30;i>0;i--){
if(bin[i] == 0){
bin[i] = 1;
break;
} else{
bin[i] = 0;
}
}
}

void Binary::PrintBinary(){
for (i=0;i<31;i++){
cout << bin[i];
}
cout << " " << endl;

}

Binary::~Binary()
{

}

八进制.h

#ifndef OCTAL_H
#define OCTAL_H


class Octal{

private:
int* oct_ = new int[10];
int i;
public:

Octal();
void ConvertToOctal();
void PrintOctal();

~Octal();
};

#endif

八进制.cpp

#include <stdio.h>
#include <iostream>
#include "Binary.h"
#include "Octal.h"

using namespace std;

Octal::Octal()
{

}
void Octal::ConvertToOctal(){
int k = 0;
int z = 0;
int o = 0;
for(i=0;i<31;i++){
if((help[i] ==1) && (k==0)){
z = z + 4;
k = k + 1;

}
else if((help[i] ==1) && (k==1)){
z = z + 2;
k = k + 1;

}
else if((help[i] ==1) && (k==2)){
z = z + 1;
k = k + 1;

}
else{
k = k + 1;

}
if(k==3){
oct_[o]=z;
z=0;
k=0;
o = o + 1;
}
}

}
void Octal::PrintOctal(){
for(i=0;i<10;i++){
cout << oct_[i];

}
}
Octal::~Octal()
{

}

最佳答案

如果你必须使用自己的类

您可以在 Binary 中添加一个方法允许您访问指向包含数据的数组的指针的类。该方法可能如下所示:

int getData(){
return bin;
}

您也可以使用Binary::bin 直接访问数组,它还会为您提供指向数组第一个元素的指针。

如果您将数组类型从 int 更改为更好至 boolchar .如果你想做得更好 - 使用 vector< bool >模板类。它基本上是一个 bool 数组。您可以在 C++ Reference 中阅读相关信息

如果您只需要功能

你真的应该只使用标准 manipulators .没有真正的理由重新发明轮子。最简单的方法是将数字输入到流中,然后将其输出到字符串中。像这样:

#include<string>     // string
#include<sstream> // stringstream
#include<iostream> // cin, cout
#include<iomanip> // setbase

using namespace std;

int main(){
int number;
cin >> number;

stringstream parser;
parser << setbase(16) << number;

string convertedNumber;
parser >> convertedNumber;

cout << endl << convertedNumber << endl;

return 0;
}

当然你可以改变setbase里面的基数操纵器。

关于c++ - 来自另一个类中的类的引用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19850202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com