c++ - 如何从传递给 C++ 函数的对象访问动态二维数组?

标签 c++ arrays pointers argument-passing dynamic-arrays

我是 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/

相关文章:

c++ - 带有 SDL 音频的 Emscripten 工作模型

c++ - CreateFileMapping 返回 ERROR_INVALID_HANDLE

Python 'astype' 不工作

c++ - 指向对象数组中函数的指针数组

c++ - 双链表出现错误 'pointer being freed was not allocated'

c++ - 错误 LNK2001 : unresolved external symbol _D3DX10CreateTextureFromFileW@24

c - 在 C 中使用 Realloc 的字符串

c# - 从 "1,2,3"解析 int[]

c - 为什么解引用指向字符串(char数组)的指针会返回整个字符串而不是第一个字符?

c++ - 值超过指向 C 样式字符串的有效指针