C++ Can';t解决错误:对类型';的非常量左值引用;布尔';无法绑定到类型为';布尔';

C++ Can';t解决错误:对类型';的非常量左值引用;布尔';无法绑定到类型为';布尔';,c++,overloading,C++,Overloading,我试图使小于运算符过载,但我一直在 错误:对类型“bool”的非常量左值引用无法绑定到类型为“bool”的临时对象。 如果有帮助的话,我尝试比较的dv变量是一个整数。你们需要帮忙吗 能给就太棒了!谢谢 //function declaration friend bool & operator < (const Vertex & v1, const Vertex & v2); ///function definition bool & operat

我试图使小于运算符过载,但我一直在 错误:对类型“bool”的非常量左值引用无法绑定到类型为“bool”的临时对象。 如果有帮助的话,我尝试比较的dv变量是一个整数。你们需要帮忙吗 能给就太棒了!谢谢

 //function declaration
 friend bool & operator < (const Vertex & v1, const Vertex & v2);

 ///function definition 
 bool & operator < (Vertex & v1, Vertex & v2)
 {
   return v1.getDV() > v2.getDV();
 }
//函数声明
friend布尔和运算符<(常数顶点和v1,常数顶点和v2);
///函数定义
布尔运算符<(顶点和v1,顶点和v2)
{
返回v1.getDV()>v2.getDV();
}

没有理由从比较运算符返回对
bool
的引用。只需将返回类型更改为
bool


编译器会准确地告诉您出了什么问题:您试图将一个非
const
引用绑定到一个临时变量。这确实毫无意义:如果您要返回一个非
常量
引用,那么您应该返回一个对一个值的引用,该值将保持不变,以便以后可以修改。

为什么要首先返回一个引用?客户机可以从修改中获得什么?因为我一直都是这样编写重载函数的,而且在过去它每次都能工作……为什么您的函数声明与定义不同?为什么第一个中有
const
,而第二个中没有?此定义不会与该声明链接。因此,将变量dv的类型从整数(我最初如何声明它)更改为bool?更改
运算符的返回值