gpt4 book ai didi

c++ - 重载比较运算符

转载 作者:太空狗 更新时间:2023-10-29 23:33:32 25 4
gpt4 key购买 nike

我在重载比较运算符时遇到问题 >< .我尝试了两种不同的方法,但仍然遇到问题。

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;
}

我的 ==运算符(operator)工作得很好。我得到这些运算符不存在的错误。这是我的第二次尝试。

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 &' 

最佳答案

尝试让你的运算符const:

bool Car::operator <(const Car &carB) const {
return mLNumber < carB.GetNum();
}
bool Car::operator >(const Car &carB) const {
return mLNumber > carB.GetNum();
}

编辑:在这种情况下,您也应该将 GetNum() 函数设为 const,因为您是在 上调用它>const Car& 对象。

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

bool Car::operator <(const Car &carB) const {
return mLNumber < carB.mLNumber;
}

关于c++ - 重载比较运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13076522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com