类[错误2878]内部的比较函数:二进制'

问题描述 投票:0回答:1

为什么我会收到该错误?我看到一个视频正在运行这样的代码,完全没有错误。我不想在课外定义。怎么了?

class Person
{
public:
    int age;
    string name;

    bool operator < (const Person& rhs) { return age < rhs.age; }
};

int main()
{
    std::set<Person> my;
    Person p{ 10, "Eduardo" };
    my.insert(p);
}
c++ stl
1个回答
1
投票

您需要将运算符标记为const,以便可以在const Person类型的对象上调用它:

bool operator < (const Person& rhs) const { return age < rhs.age; } }; 

std::set<Person>的默认Compare模板参数是std::less<Person>,它采用const Person参数。

© www.soinside.com 2019 - 2024. All rights reserved.