主要問題在於,類裏面的重載的二元運算符時, 只需要一個參數,另一個參數由this指針傳入,這裏如果需要傳入兩個參數,需要放到類外定義,聲明友元(訪問私有數據和函數)。
如下:
class myTask{
public:
myTask(int a, int b):c(a),p(b){}
//類內重載只需要一個參數,所以需要友元;而不聲明友元則無法訪問私有成員
friend bool operator < (const myTask &a1, const myTask& a2);
private:
int c, p;
};
//去掉friend,否則會報錯 error: ‘friend’ used outside of class
bool operator < (const myTask &a1, const myTask& a2){
return a1.p < a2.p;
}