error: “自定義函數XXX” must take exactly one argument

主要問題在於,類裏面的重載的二元運算符時,   只需要一個參數,另一個參數由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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章