【发布时间】:2012-03-22 09:40:49
【问题描述】:
我一直在尝试在我的 C++ 类中使用二维数组作为构造函数的参数。
标题:
Matrix::Matrix(double **initComponents, int rows, int columns)
如果我继续定期调用 new 和初始化子数组,将指针传递给构造函数,这一切都很好,但我在想,我可以用初始化器创建静态 2D 数组并传递一个指向它的指针吗?给构造函数?
double A[][3] = { {2.0, 3.0, 4.0} , {1.0, 3.0, 4.0} , {2.0, 3.0, 4.0} };
Matrix *mtx = new Matrix(A, 3, 3);
这不起作用:(
MS Visual Studio 编译器:
" error C2664: 'Matrix::Matrix(double **,int,int)' : cannot convert parameter 1 from 'double [3][3]' to 'double ** "
谁能解释为什么?我认为它会在引用和指针之间进行自动转换。
第二个问题是,为什么我可以将A 声明为双重A[][],为什么我必须指定第二个维度,即使我指定了所有值。
【问题讨论】:
-
为了它的价值,完全避免多维数组要容易得多。他们很少值得麻烦。
-
我没有看到任何数组参数
-
数组不是指针。说真的。
标签: c++ arrays parameters