我无法重载比较运算符>
和<
。我尝试了两种不同的方式,但我仍然遇到麻烦。重载比较运算符
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;
}
我==
运营商工作得很好。我得到这些操作员不存在的错误。这是我的第二次尝试。
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();
}
而且我得到的错误是参数太多。我也得到这样的:
'Car::GetNum' : cannot convert 'this' pointer from 'const Car' to 'Car &'
不,这不是问题。问题是'GetNum()'不是'const'。操作符本身实际上并没有被任何'const'对象调用。 –
@NikosChantziaras你应该修改你的降低政策 - 这只是不完整的,没有错的。和你一样(操作符**应该是const **,+你没有处理另一个问题 - 多个参数的错误)。从我+1,因为你是第一(但仍然不完整) –
这根本不解决OP的问题,这就是为什么我认为这是一个不好的答案。其他人也没有发现错误的真正原因,这实际上令人惊讶。当然,操作符应该是'const',但这不是实际的问题:-) –