qjwzero 2020-08-29 17:27 采纳率: 0%
浏览 162

vs2017,在给set规定排序规则是出现c2664错误是为啥?

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

中的 & 去除,则不会报错

  • 写回答

3条回答 默认 最新

  • 裔远 2020-08-29 17:37
    关注

    可能是空格问题,你的&与person连接了,把空格移到&前,改为person &p1试一下。(不行不要怪我哦)

    评论

报告相同问题?

悬赏问题

  • ¥15 Kylin-Desktop-V10-GFB-Release-JICAI_02- 2207-Build14-ARM64.iso有没有这个版本的系统啊
  • ¥15 能不能通过蓝牙将传感器数据传送到手机上
  • ¥20 100元python和数据科学实验项目
  • ¥15 根据时间在调用出列表
  • ¥15 FastReport.community 编辑,table只显示“每页”最顶部和底部横线
  • ¥15 R 包chipseeker 安装失败
  • ¥15 Veeam Backup & Replication 9.5 还原问题
  • ¥15 vue-print-nb
  • ¥15 winfrom的datagridview下拉框变成了黑色,渲染不成功
  • ¥20 利用ntfy实现短信推送