这是一个简单的编译错误,我正在分配双数组:
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*)
答案 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*);