-1

我试图得到这个函数的结果:

C++:

void EM::getCovs(std::vector<Mat>& covs) const

我的问题是如何获得covs?我不断收到编译错误。这是我的代码。

const vector<Mat> &covs;
model->getCovs(covs);

我得到错误说

引用变量“covs”的声明需要一个初始化器。

(1) 这是从 getCovs 获取数据的正确方法,或者

(2) 我需要像错误所示那样初始化“covs”。

4

2 回答 2

1

&参数列表中的表示void getCovs(std::vector& covs)传递对现有向量的引用。

您应该为向量声明本地存储:

vector<Mat> covs;

然后你可以将它的引用传递给getCovs

model->getCovs(covs);

你写的 ( vector<Mat>& covs;) 是一个引用另一个向量的局部变量;但是您还没有提供另一个向量供它参考。也可以防止它const被修改,但您希望它被 getCovs 函数修改。

于 2016-01-03T08:03:51.627 回答
0

只需将其声明为vector<Mat> covs;. 你想要一个真正的向量,而不是一个引用,来传递给函数。而且您不希望它是 const 因为您希望函数写入其中。

于 2016-01-03T08:03:16.927 回答