我正在为我的学校设计一个项目(我仍然是初学者),但是遇到了以下问题:

"[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;
}
waitingListVehicle对象的 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/

10-10 21:22