Код: Выделить всё
class Point {
int x, y;
public:
Point(int x0, int y0): x(x0), y(y0) {};
bool operator==(const Point& rval) {
return x == rval.x && y == rval.y;
}
};
Код: Выделить всё
bool hasVal(std::vector
& vec, const Point& target) {
return find(vec.begin(), vec.end(), target) != vec.end();
}
241 17 C:\Program Files (x86)\Embarcadero\Dev-Cpp\TDM-GCC -64\lib\gcc\x86_64-w64-mingw32\9.2.0\include\c++\bits\predefine_ops.h [Ошибка] нет совпадения для 'operator==' (типы операндов: 'const Point' и 'const Point')
Связано: аналогичная проблема возникает, если я создаю класс с таким вектором в качестве члена и попытаться выполнить ту же работу в функции-члене с тегом const.
(Примечание: создание векторного аргумента, такого как const, похоже, отлично работает для вектора примитивов, таких как int, но не для этого типа объекта, определенного программистом.)
В чем здесь проблема и как ее лучше всего решить?
Подробнее здесь: https://stackoverflow.com/questions/792 ... n-for-find