当我尝试编译使用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;}
~~~ ^ ~~~
答案 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)
{ ... }