代码之家  ›  专栏  ›  技术社区  ›  user9806643

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

  •  0
  • user9806643  · 技术社区  · 7 年前

    假设我创建了一个接受int m[5][5]的构造函数。每当我在main中初始化数组时,比如:(int k[5][5];)并将其作为参数传递给构造函数,它可以正常工作。然而,我尝试过如下分配二维阵列:

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

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

    2 回复  |  直到 7 年前
        1
  •  1
  •   Kristofer Björnson    7 年前
    int d[5][5];
    

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

        2
  •  0
  •   Khaled Mohamed    7 年前

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

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

    className(int **d);
    

    或者只需传递一个普通的2D数组,你的构造函数将如下所示:

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