Это мой класс объектов:
class person
{
public:
int id;
Rect rect;
};
В основном я перебираю вектор persons
, и когда я нахожу совпадение, я хочу обновить rect
до некоторого нового rect
или даже заменить весь новый объект person
.
Rect mr = boundingRect(Mat(*itc));
person per;
vector <person> persons;
vector <person>::iterator i;
i = persons.begin();
while (i != persons.end()) {
if ((mr & i->rect).area() > 0) {
rectangle(frame, mr, CV_RGB(255, 0, 0));
putText(frame, std::to_string(i->id).c_str(), mr.br(),
FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(0, 0, 255));
replace(persons.begin(), persons.end(), i->rect, mr); // this line causes error
break;
} else {
...
}
Ошибка, которую я получаю в строке, помеченной комментарием:
Error C2678 binary '==': no operator found which takes a left-hand operand of type 'person' (or there is no acceptable conversion)
, а также эта:
Error C2679 binary '=': no operator found which takes a right-hand operand of type 'const _Ty' (or there is no acceptable conversion)
Я пытался erase
добавить объект и добавить новый, но я все еще получал ту же ошибку.Я прочитал C ++ Удалить объект из вектора , но я не уверен, что это моя проблема, и я не использую C ++ 11, поэтому эти решения не работают для меня.
это что-то с итератором и моим person
объектом, когда они приходят к сравнению?Я думаю, что это так, но не знаю, как это решить.