主要问题在于,类里面的重载的二元运算符时, 只需要一个参数,另一个参数由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;
}