C++ &引用;二进制表达式“”的操作数无效;使用std::sort时
当我试图编译一个使用std::sort的项目时,我得到了错误C++ &引用;二进制表达式“”的操作数无效;使用std::sort时,c++,sorting,std,C++,Sorting,Std,当我试图编译一个使用std::sort的项目时,我得到了错误二进制表达式的无效操作数 我使用std::排序如下: vector <record> vrec; ... sort(vrec.begin(), vrec.end()); bool operator< (record &r1, record &r2) { ... } bool operator< (const record &r1, const record &r2) { ...
二进制表达式的无效操作数
我使用std::排序如下:
vector <record> vrec;
...
sort(vrec.begin(), vrec.end());
bool operator< (record &r1, record &r2) { ... }
bool operator< (const record &r1, const record &r2)
{ ... }
向量vrec;
...
排序(vrec.begin(),vrec.end());
我已经像这样重载了<操作符:
vector <record> vrec;
...
sort(vrec.begin(), vrec.end());
bool operator< (record &r1, record &r2) { ... }
bool operator< (const record &r1, const record &r2)
{ ... }
bool运算符<(记录&r1,记录&r2){…}
这是我收到的错误信息的摘录:
invalid operands to binary expression ('const record' and 'const record')
operator()(const _T1& __x, const _T1& __y) const {return __x < __y;}
~~~ ^ ~~~
二进制表达式的操作数无效('const-record'和'const-record')
运算符()
~~~ ^ ~~~
运算符您的比较运算符的签名与std::less期望的:常量引用参数不匹配
sort3a.cpp:127:6:注意:候选函数不可行:第一个参数(“常量记录”)将丢失常量限定符
bool操作员<(记录和r1,记录和r2)
试着像这样重新定义它:
vector <record> vrec;
...
sort(vrec.begin(), vrec.end());
bool operator< (record &r1, record &r2) { ... }
bool operator< (const record &r1, const record &r2)
{ ... }
bool运算符<(常量记录和r1、常量记录和r2)
{ ... }
发布您的错误。我们这些奇怪的人能读懂你奇怪的错误。水晶球仍然阴云密布。运算符应该是一个全局函数,对其参数进行const
引用。不过,您的问题需要是“开”,而不是“开”PasteBin@cardinals7879确切地我不知道,但一个很好的近似原因是你问了一个问题,1。缺乏研究努力(这是一个极为常见的错误,重复了无数次),2。你没有提供足够的信息来推断错误,3。即使你这么做了,你还是强迫我们去外部网站查看代码,这表明4。你没有阅读网站的常见问题。为什么?我认为这是很好的风格,但一点也不好required@sehe:我不确定是否需要它,但GCC的std::sort
实现确实需要它。@seheoperator()
签名是bool(const&,const&)
。它使用运算符。我忘了std::less
是第一个中继到operator@Manu343726但是std::sort
不使用std::less
,而是使用运算符