首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从其他类中的类引用数组

从其他类中的类引用数组
EN

Stack Overflow用户
提问于 2013-11-08 09:51:34
回答 1查看 78关注 0票数 1

我在不同的类中进行每个转换,但我想使用数字的二进制形式,它存储在第一个类中的数组(Bin31)中。我的文件是:

Binary.h

代码语言:javascript
复制
#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

Binary.cpp

代码语言:javascript
复制
#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()
{

}

Octal.h

代码语言:javascript
复制
#ifndef OCTAL_H
#define OCTAL_H


class Octal{

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

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

    ~Octal();
};

#endif

Octal.cpp

代码语言:javascript
复制
#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()
{

}
EN

回答 1

Stack Overflow用户

发布于 2013-11-08 11:19:10

如果必须使用自己的类,则为

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

代码语言:javascript
复制
int getData(){
  return bin;
}

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

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

如果您只需要funcionality,请使用

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

代码语言:javascript
复制
#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操纵器中更改基础。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19850202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档