Как перегрузить оператор "<" для работы с указателями, указывающими на классы? </p>
Оператор <для классов c работает правильно, но для указателей он не возвращает правильный ответ и кажется, что нет работать на всех. </p>
class Point
{
int x, y;
public:
bool operator< (const Point* &p) const
{
if (x == p->x)
return y < p->y;
else
return x < p->x;
}
bool operator< (const Point &p) const
{
if (x == p.x)
return y < p.y;
else
return x < p.x;
}
Point (int a, int b)
{
x = a;
y = b;
}
};
Здесь я проверяю функцию перегрузки. В обоих случаях моя программа должна вернуть false
.
Point* a = new Point(1,2);
Point* b = new Point(0,0);
Point c = Point(1,2);
Point d = Point(0,0);
cout<< boolalpha << (a<b) << '\n'; <- always returns true
cout<< boolalpha << (c<d) << '\n'; <- returns false