Я создал класс Point
и перегрузил его operator==
и класс PointSet
, который имеет массив указателей на Point
объектов.Сравнение между объектами повышать ошибку компиляции в соответствии с заказом
Теперь, когда я хочу сравнить между двумя объектами, я запускаюсь в необъяснимую ошибку компиляции, когда я пытаюсь сравнить A == B, но не тогда, когда B == A. i.e, когда im переворачивает порядок объекта, функция работает как разумеется. Я не нашел никакой логики между этими двумя случаями.
Это классы Точечные и множества точек (diffrenet заголовочные файлы)
class Point{
public:
Point(int x, int y);
~Point();
bool operator==(const Point& point);
private:
int _x, _y;
};
class PointSet
{
public :
PointSet(const size_t startLen);
~PointSet();
int contains(const Point *point) const
private:
Point **_pointArray;
size_t _size;
};
это реализация operator==
bool Point::operator ==(const Point& point){
return (this->_x == point.get_x() && this->_y == point.get_y());
}
И это функция, где возникает проблема
int PointSet::contains(const Point *point) const{
for (int i=0; i<_size;i++){
if (*point == *_pointArray[i]){ <-----HERE
return i;
}
}
return -1;
}
это НЕ ОШИБКА if(*_pointArray[i] == *point)
компиляция «Невозможно сравнить структуры»
Что такое ошибка компиляции? –
Ваш оператор == должен быть функцией const. –
'get_x()' и 'get_y()' объявлены как 'const' функции? –