我是否需要动态分配双数组才能传递它们?

时间:2012-05-31 04:27:46

标签: c++

这是一个简单的编译错误,我正在分配双数组:

double mixmu[][1]  = {{1},{-1}};
double mixvar[][1] = {{1},{1}};
double coef[]      = {1,1};

我不能将这些作为双**对象传递吗?

error: no matching function for call to ‘MixtureModel::MixtureModel(int, int, double [2], double [2][1], double [2][1], Distribution*)’
./problems/MixtureModel.h:25: note: candidates are: MixtureModel::MixtureModel(int, int, double*, double**, double**, Distribution*)

1 个答案:

答案 0 :(得分:2)

  

我是否需要动态分配双数组才能传递它们?

不,你没有!
你的误解/怀疑源于(不正确)事实,即数组是指针

不!数组不是指针!!
在数组名称无效的情况下,数组名称有时会衰减到指向其第一个元素的指针。

二维数组不会衰减为双指针。它衰减到指向数组的指针。

您的声明必须是:

MixtureModel::MixtureModel(int, int, double [2], double [2][1], double [2][1], Distribution*);

MixtureModel::MixtureModel(int, int, double *, double(*)[1], double (*)[1], Distribution*);

好读:
How do I use arrays in C++?