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

时间:2018-05-17 14:19:56

标签: c++ class multidimensional-array constructor new-operator

假设我创建了一个带有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 个答案:

答案 0 :(得分:1)

<a id="add">Add new</a>

 <div id="container">
 </div>


$(document).ready(function() {

  $("#add").on("click", function(e){
  e.preventDefault();

    $("#container").append('<select class="idFolder" name="idFolder[]"><option value="AL">Alabama</option><option value="WY">Wyoming</option></select>');

    $('.idFolder').select2({
    width: '100%'
  }).on('select2:select', function(e) {
    var id = e.params.data.id;
    alert(id);
  });

  });

});

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

答案 1 :(得分:0)

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

所以要么使你的构造函数如下:

className(int **d);

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

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