class person
{
public:
person(string name, int age)
{
this->name = name;
this->age = age;
}
void pirnt_person() const
{
cout << this->name << " " << this->age << endl;
}
string name;
int age;
};
class Mycompare07
{
public:
bool operator() (person& p1, person& p2)
{
return p1.age > p2.age;
}
};
void test07()//自定义类型存入set必须规定排序规则
{
person p1("aaa", 34);
person p2("bbb", 43);
person p3("ccc", 25);
person p4("ddd", 62);
person p5("eee", 15);
set<person, Mycompare07> s1;
s1.insert(p1);
s1.insert(p2);
s1.insert(p3);
s1.insert(p4);
s1.insert(p5);
for (set<person, Mycompare07>::iterator it = s1.begin(); it != s1.end(); it++)
(*it).pirnt_person();
cout << endl;
}
在以上代码的中,规定set排序规则的仿函数中,使用 & 就会报c2664的错误,请问是为什么?
若将
class Mycompare07
{
public:
bool operator() (person& p1, person& p2)
{
return p1.age > p2.age;
}
};
中的 & 去除,则不会报错