我无法重载比较运算符>和<.我尝试了两种不同的方式,但我仍然遇到麻烦.
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)
尝试制作您的运营商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)
| 归档时间: |
|
| 查看次数: |
2863 次 |
| 最近记录: |