构造函数不会将使用 new 初始化的数组作为参数

Constructor won't take array initialized with new, as a parameter

假设我创建了一个接受 int m[5][5] 的构造函数。每当我在 main 中初始化一个数组时,如:(int k[5][5];) 并将其作为参数传递给它工作的构造函数fine.Yet,我已经尝试如下分配二维数组:

  int **d=new int*[5];
   for(int i=0;i<5;i++){
   d[i]=new int[5];  }

    //5x5 matrix

并且构造函数不会将数组作为参数。 为什么会这样?

指向每个携带数组的指针的指针不是二维数组,因此 d[n][m] 不是 **d,尽管您可能会以相同的方式处理它们以从中获取值,如下所示: d[i][j].

所以要么按如下方式构造你的构造函数:

className(int **d);

或者只传递一个普通的二维数组,你的构造函数将是这样的:

className(int d[5][5]);
int d[5][5];

没有定义双指针,尽管语法可能会让您这么认为。参见 Why can't we use double pointer to represent two dimensional arrays?