使用std :: sort时“二进制表达式的操作数无效”

时间:2014-02-10 14:32:37

标签: c++ sorting std

当我尝试编译使用std :: sort的项目时,我收到错误invalid operands to binary expression

我正在使用std :: sort这样:

vector <record> vrec;
...
sort(vrec.begin(), vrec.end());

我已经超载了&lt;像这样的运算符:

bool operator< (record &r1, record &r2) { ... }

这是我收到的错误消息的摘录:

invalid operands to binary expression ('const record' and 'const record')

operator()(const _T1& __x, const _T1& __y) const {return __x < __y;}

                                                         ~~~ ^ ~~~

2 个答案:

答案 0 :(得分:4)

operator<必须按值(const引用或复制)获取参数,而不是参考:

bool operator<( const record& lhs , const record& rhs ) 
{
    return /* whatever comparison criteria you have */;
}

答案 1 :(得分:0)

您的比较运算符的签名与std :: less期望的不匹配:const引用参数。

  

sort3a.cpp:127:6:注意:候选函数不可行:第一个参数('const record')会丢失const限定符
  bool运算符&lt; (记录&amp; r1,记录&amp; r2)

尝试重新定义它:

bool operator< (const record &r1, const record &r2)
{ ... }