You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++ sort函数第三个参数compare报非静态成员函数错误原因求解

错误产生原因

该错误是因为你将compare定义为了类的非静态成员函数,存在两个核心不匹配问题:

  • 非静态成员函数隐含this指针作为第一个入参,函数实际签名和std::sort要求的比较器签名不匹配:std::sort要求比较器接收两个待比较元素作为入参,而非静态成员函数的隐含this会占用第一个参数位,实际需要3个入参,无法适配。
  • 非静态成员函数无法脱离类实例单独作为函数指针传递,必须绑定到具体的类实例才能调用,直接传递函数名会被编译器判定为无效的可调用对象。
常见解决方案

你可以选择以下任意一种方式修复问题:

  • 将compare修改为类的静态成员函数,静态成员函数没有隐含this指针,签名符合要求可直接传递
  • 将compare定义为全局函数,不受类成员的隐含参数限制
  • 直接使用Lambda表达式作为比较器,无需单独定义比较函数,示例代码如下:
sort(intervals.begin(), intervals.end(), [](vector<int>& i1, vector<int>& i2) {
    return i1[0] < i2[0];
});

内容的提问来源于stack exchange,提问作者HelloWorld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:18:01