重载比较运算符

use*_*216 2 c++

我无法重载比较运算符><.我尝试了两种不同的方式,但我仍然遇到麻烦.

bool Car::operator ==(const Car &car)
{
    return mLNumber == car.GetNum();
}

bool Car::operator <(const Car &carB)
{
    return mLNumber < carB.GetNum(); 
}
bool Car::operator >(const Car &carB)
{
    return mLNumber > carB.GetNum(); 
}
int Car::GetNum()
{
    return mLNumber;
}
Run Code Online (Sandbox Code Playgroud)

我的==操作员工作正常.我得到这些运算符不存在的错误.这是我的第二次尝试.

bool Car::operator <(const Car &carA, const Car &carB)
{
    return carA.GetNum() < carB.GetNum(); 
}
bool Car::operator >(const Car &carB)
{
    return carA.GetNum() > carB.GetNum(); 
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是参数太多了.我也明白了:

'Car::GetNum' : cannot convert 'this' pointer from 'const Car' to 'Car &' 
Run Code Online (Sandbox Code Playgroud)

ale*_*nis 6

尝试制作您的运营商const:

bool Car::operator <(const Car &carB) const {
    return mLNumber < carB.GetNum(); 
}
bool Car::operator >(const Car &carB) const {
    return mLNumber > carB.GetNum(); 
}
Run Code Online (Sandbox Code Playgroud)

编辑:在这种情况下,您应该也可以使用该GetNum()函数,const因为您在const Car&对象上调用它.

你也不需要GetNum(),你可以写

bool Car::operator <(const Car &carB) const {
    return mLNumber < carB.mLNumber; 
}
Run Code Online (Sandbox Code Playgroud)