使用 std::sort 时"invalid operands to binary expression"

"invalid operands to binary expression" when using std::sort

本文关键字:to binary expression operands invalid sort 使用 std      更新时间:2023-10-16

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

我正在使用 std::排序如下:

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

我已经像这样重载了<运算符:>

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

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

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

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

sort3a.cpp:127:6:注意:候选函数不可行:第一个参数("常量记录")将失去常量限定符
布尔运算符<(记录 &R1,记录 &R2)

尝试像这样重新定义它:

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