为什么我会收到该错误?我看到一个视频正在运行这样的代码,完全没有错误。我不想在课外定义。怎么了?
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);
}
您需要将运算符标记为const
,以便可以在const Person
类型的对象上调用它:
bool operator < (const Person& rhs) const { return age < rhs.age; } };
std::set<Person>
的默认Compare模板参数是std::less<Person>
,它采用const Person
参数。