问题描述
这是我的类声明:
class Person
{
private:
string name;
public:
void showData()
{
cout << name << endl;
}
void insertData()
{
cin >> name;
}
bool operator<(Person p)
{
return name < p.name;
}
};
现在我想创建一个person类的多组对象,怎么做? 这是我要编写的主要功能:
int main()
{
multiset<Person> m;
for (int i = 0; i < 6; i++)
{
Person p;
p.insertData();
m.insert(p);
}
multiset<Person>::iterator it;
// for (it = m.begin(); it != m.end(); it++)
// {
// cout << it.name << endl;
// }
}
解决方法
您需要以稍微不同的方式定义您的 operator<
。我会把它定义为朋友而不是班级成员,但如果它是班级成员,它应该是 const
。
所以没问题
class Person
{
...
bool operator<(Person p) const
{
return name < p.name;
}
};
但我会这样做
class Person
{
...
friend bool operator<(const Person& x,const Person& y)
{
return x.name < y.name;
}
};