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

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

本文关键字:数组 参数 初始化 new 构造函数      更新时间:2023-10-16

假设我创建了一个采用 int m[5][5] 的构造函数。每当我在 main 中初始化一个数组时,例如:(int k[5][5];)并将其作为参数传递给构造函数,它都可以正常工作。然而,我已经尝试分配 2-D 数组,如下所示:

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

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

int d[5][5];

不定义双指针,尽管语法可能会导致您这样认为。请参阅为什么我们不能使用双指针来表示二维数组?

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

因此,请按如下方式创建构造函数:

className(int **d);

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

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