我有一個頭,它由不同的模板函數使用模板函數
#include <cmath>
template<class T>
bool lessThan(T x, T y) {
return (x < y);
}
template<class T>
bool greaterThan(T x, T y) {
return (x > y);
}
一類
class Point2D {
public:
Point2D(int x, int y);
protected:
int x;
int y;
double distFrOrigin;
以我驅動類排序列表容器,我有Point2D的一個STL列表:list<Point2D> p2dL
。如何在我的標題中使用模板函數lessThan
和greaterThan
對p2dL
進行排序?即基於x
或y
值對列表排序。
編輯:那麼,根據安東的評論,我想出了這個:
bool Point2D::operator<(Point2D p2d) {
if (this->x < p2d.x || this->y < p2d.y
|| this->distFrOrigin < p2d.distFrOrigin) {
return true;
}
else {
return false;
}
}
難道我這樣做是正確?
您需要爲您的類實現<運算符,否則編譯器不知道如何處理比較。 – SinisterMJ
訂購兩個2D點沒有「正確」方式。你必須決定哪個任意選擇適合你的問題。 – juanchopanza