【问题标题】:In C++ how do you access a multidimensional Array in ClassA, from ClassB?在 C++ 中,如何从 Class B 访问 Class 中的多维数组?
【发布时间】:2019-03-25 02:16:39
【问题描述】:

“ClassA.h”

class ClassA {
public:
classArray[10][5];

void loadArray(){
//loads ints into array
}
};

“ClassB.h”

class classB {
void outputArray(){
ClassA classA;
cout << classA.classArray[1][1];
}

};

每当我打印数组[1][1] 时,它都会向控制台输出 0。尽管已将 7020 装入其中。主要是调用这两个函数。

【问题讨论】:

  • 在打印之前,您需要像classA.loadArray()一样调用loadArray

标签: c++ arrays oop


【解决方案1】:

您有一个已初始化ClassA 实例的换行符,并且尚未在其上调用loadArray。要么明确地调用它:

ClassA classA;
classA.loadArray(); // Here
cout << classA.classArray[1][1];

或者,如果可能,考虑将此逻辑移至ClassA 的构造函数。

【讨论】:

    【解决方案2】:

    当你这样做时:

    ClassA classA;
    cout << classA.classArray[1][1];
    

    您调用未定义行为 (UB),因为classA 的数组被使用未初始化。首先,将整数加载到它,然后打印它,所以你可能需要这样做:

    ClassA classA;                       // create an object
    classA.loadArray();                  // fill the array of the object
    cout << classA.classArray[1][1];     // print a specific element
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多