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

Do I need to dynamically allocate double arrays to pass them?

本文关键字:数组 是否 动态分配      更新时间:2023-10-16

这是一个简单的编译错误,我像这样分配双精度数组:

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

我是否需要动态分配双精度数组来传递它们?

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

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

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

您的声明必须是:

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

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

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