Скажем, у меня есть следующая структура:
struct Parameter {
double value;
double error;
};
Так что я обычно работаю с векторами этой структуры (т.е. std::vector<Parameter>
), и иногда я хочу установить вектор из значений (но не ошибок ) в этом векторе параметров, для удобства используйте operator=
со стандартным std :: vector.
std::vector<Parameter> vector_of_parameters;
std::vector<double> vector_of values;
....
vector_of_parameters = vector_of_values;
Для этого я пытаюсь перегрузить operator=
для этой структуры следующим образом:
std::vector<Parameter> operator=(const std::vector<double>& v) {
this->clear();
for (const auto& i:v) {
Parameter p;
p.value = i;
this->push_back(p);
}
return *this;
}
Но это вернет ошибку, говорящую о том, что оператор std :: vector = (const std :: vector & v) должен быть нестатическим членом . Поэтому, если я правильно понимаю, я должен определить это как функцию-член оператора как:
std::vector<Parameter>::operator=(const std::vector<double>& v) {
this->clear();
for (const auto& i:v) {
Parameter p;
p.value = i;
this->push_back(p);
}
return *this;
}
Теперь ошибка говорит о том, что синтаксис с шаблоном <> , но я его не вижу или не понимаю, и не знаю, что еще я могу сделать.