2
我有一個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
說:
此函數要求值類型具有 operator ==()的實現。
試過不同的方法,但似乎沒有按預期工作。
這裏是到目前爲止,我已經試過代碼:
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)
爲真但我想這會影響行爲,以便使用我自己的比較器進行比較。