0

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

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*)
4

1 回答 1

2

我需要动态分配双数组来传递它们吗?

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

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

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

您的声明必须是:

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

或者

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

好读:
如何在 C++ 中使用数组?

于 2012-05-31T05:35:18.657 回答