如何从传递给c++中的函数的对象访问动态2D数组

How do I access a dynamic 2D array from an object which is passed to a function in c++?

本文关键字:对象 函数 访问 动态 数组 2D c++      更新时间:2023-10-16

我是C++的初学者,所以我不确定这是否可能。我想知道我是否可以从传递给函数的对象访问动态2D数组。这是简化的代码:

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;
};

Main.cpp:

int main() {
    A a = new A(15,15);
    B b = new B();
    b->print(a);
}

我一直收到这个错误:Error 13 error C2086: 'int **A::array2d' : redefinition

我不确定我是否正确地通过了2D阵列。我对所有的建议都持开放态度。有人能告诉我如何解决这个问题吗?谢谢

如果需要进一步解释,请告诉我。

好的,我想我发现了问题,错误号表明你正在重新定义某个东西,我认为这是array2d的名称,因为在两个类中你使用了相同的名称。希望更改名称能对您有所帮助
我还建议您将函数void print(A* a)中的参数a的名称更改为void print(A* objA),可能这里有问题。