刚刚写代码遇到的报错:
将被调用的成员函数用const修饰后解决。
class Person
{
public:
Person(string name, int age)
{
this->m_name = name;
this->m_age = age;
}
string getName()const
{
return this->m_name;
}
int getAge()const
{
return this->m_age;
}
private:
string m_name;
int m_age;
};
for (set<Person>::iterator sit = s.begin(); sit != s.end(); sit++)
{
cout << "姓名: " << (*sit).getName() << " " << "年龄:" << (*sit).getAge() << endl;
}
原因:
自从VS2010开始,set的iterator类型自动就是const的引用类型,因此当set保存的是类类型时,对iterator解引用无法调用类的非const成员。所以两个get成员函数的后面要加上const修饰,才能被*sit(迭代器)调用。