我正在为我的学校设计一个项目(我仍然是初学者),但是遇到了以下问题:
"[Error] no match for 'operator==' (operand types are 'Vehicle' and 'const Vehicle')"
Vehicle
是我的项目中的一个类。这就是给我错误的原因:
int DayLog::findWaitingPosistion(Vehicle const& v){
if (find(waitingList.begin(),waitingList.end(),v) != waitingList.end())
return 1;
}
waitingList
是Vehicle
对象的 vector 。我进行了搜索,但找不到答案,尽管我遇到了许多类似的问题,但我尝试了所有方法,但无济于事。
提前致谢。
最佳答案
使用find的最低要求是指定的 operator==
函数。如果 std::find
找到了您的类型,它就是在 vector 中进行迭代的方式。
这样的事情将是必要的:
class Vehicle {
public:
int number;
// We need the operator== to compare 2 Vehicle types.
bool operator==(const Vehicle &rhs) const {
return rhs.number == number;
}
};
这将允许您使用查找。看到一个live example here.
关于C++ [错误] 'operator=='不匹配(操作数类型为 'Vehicle'和 'const Vehicle'),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35050065/