微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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;
    }
};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。