Я пытаюсь получить результат этой функции:
C ++:
void EM::getCovs(std::vector<Mat>& covs) const
Мой вопрос, как получить covs
? Я продолжал получать ошибку компиляции. Вот мой код
const vector<Mat> &covs;
model->getCovs(covs);
Я получил ошибку сказал
Объявление ссылочной переменной ‘covs’ требует инициализатора.
(1) Это правильный способ получения данных из getCovs, или
(2) Мне нужно инициализировать ‘covs’, как показано в сообщении об ошибке.
&
в списке параметров void getCovs(std::vector& covs)
означает, что ты передать ссылку к существующему вектору.
Вы должны объявить локальное хранилище для вектора:
vector<Mat> covs;
тогда вы можете передать ссылку на него в getCovs
:
model->getCovs(covs);
Что ты написал (vector<Mat>& covs;
) является локальной переменной, которая ссылается на другой вектор; однако вы не предоставили другой вектор для ссылки. const
также предотвращает его изменение, но вы хотите, чтобы он был изменен функцией getCovs.
Просто объявите это как vector<Mat> covs;
, Вы хотите, чтобы реальный вектор, а не ссылка, передавался в функцию. И вы не хотите, чтобы он был константным, потому что вы хотите, чтобы функция записывала в него.