У меня есть QList<MyPoint*> l
где MyPoint
тип пользовательского класса-defiend, где я хотел бы сделать:Как написать собственный компаратор для QList указателей?
QList<MyPoint*> l;
MyPoint *a = new MyPoint(2, 4);
MyPoint *b = new MyPoint(4, 8);
MyPoint *c = new MyPoint(2, 4);
l << a << b;
затем:
l.contains(c); //true
Я попытался перегрузки ==
оператора, как doc
говорит:
Эта функция требует, чтобы тип значения имел реализацию оператора ==().
Пробовал разные способы, но ни один из них не работает должным образом.
Вот код, который я пытался до сих пор:
class MyPoint
{
public:
int x, y;
MyPoint(int x, int y)
: x(x),
y(y)
{
}
bool operator == (const MyPoint &other) const
{
return other.x == this->x && other.y == this->y;
}
bool operator == (const MyPoint *other) const
{
return true;
}
};
bool operator == (const MyPoint &a, const MyPoint &b)
{
return a.x == b.x && a.y == b.y;
}
Я пытался что-то вроде:
bool operator == (const MyPoint *a, const MyPoint *b)
{
return a.x == b.x && a.y == b.y;
}
Но я прочитал это не возможно ... Я знаю (*a == *c)
будет верно но я бы хотел, чтобы это повлияло на поведение , чтобы сравнить его с моим собственным компаратором.