我是 C++ 的初学者,所以我不确定这是否可行。我想知道我是否可以从传递给函数的对象访问动态二维数组。这是简化的代码:
A 类:
class A {
public:
A(int length, int width) {
// initializes the 2d array
}
int** getArray() { return array2d;}
int getLength() { return length;}
int getWidth() { return width;}
private:
int** array2d;
int length, width;
};
B 类:
#include "A.h"
class B {
public:
B() {}
void print(A* a) {
int** temp = a->getArray(); // ERROR HERE
for (int i = 0; i < a->getLength(); i++) {
for (int j = 0; j < a->getWidth(); j++)
cout << temp[i][j] << endl;
}
}
private:
int** array2d;
};
主要.cpp:
int main() {
A a = new A(15,15);
B b = new B();
b->print(a);
}
我不断收到此错误:Error 13 error C2086: 'int **A::array2d' : redefinition
。
我不确定我是否正确传递了二维数组。我愿意接受所有建议。谁能告诉我如何解决这个问题?谢谢。
如果需要进一步解释,请告诉我。
最佳答案
好吧,我想我发现了问题,错误号表明你正在重新定义一些东西,我认为它是 array2d
的名称,因为在两个类中你都使用相同的名称。希望更改名称对您有所帮助。
而且我还建议您将函数void print(A* a)
中的参数a
的名称更改为void print(A* objA)
,可能问题出在这里。
关于c++ - 如何从传递给 C++ 函数的对象访问动态二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26694788/