Я реализую следующую функцию:
bool DenStream::_try_merge(const double sample,
const double weight,
const std::optional<MicroCluster>& micro_cluster) const {
if (micro_cluster) {
MicroCluster micro_cluster_copy(*micro_cluster);
micro_cluster_copy.insert_sample(sample, weight);
if (micro_cluster_copy.get_radius() <= this->eps) {
micro_cluster.insert_sample(sample, weight); // THIS DOES NOT WORK
return true;
}
}
return false;
};
Компилятор сообщает: ошибка: у 'const class std :: option' нет члена с именем 'insert_sample' .
Я понимаю ошибку, но мне не удалось найти решение, которое работает. Если я напишу
*micro_cluster.insert_sample(sample, weight);
, компилятор скажет error: «const class std :: option» не имеет члена с именем «insert_sample» . Я также пытался использовать emplace () и value ().
Буду признателен, если кто-нибудь сможет мне помочь.
Хорошо, теперь это работает. Как предлагается в комментариях, я изменил на
micro_cluster->insert_sample(sample, weight);
, и интерфейс должен быть
bool DenStream::_try_merge(const double sample,
const double weight,
std::optional<MicroCluster>& micro_cluster)
Спасибо!