C++:如何创建一个类的多组对象?

问题描述

这是我的类声明:

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;
    }
};