我的一个朋友试图重载一个等于运算符来比较Allegro中的颜色,但它不起作用,他得到错误“不匹配运算符==”这在Color类/结构外重载,重载运算符函数如下所示:
typedef ALLEGRO_COLOR Color;
bool operator==(const Color& rhs) const
{
if(_col.a==rhs.a && _col.b==rhs.b && _col.g==rhs.g && _col.r==rhs.r)
return true;
else
return false;
}
.
.
.
//Data member
Color _col
我认为这不起作用,因为运营商是定义的&在Allegro的ALLEGRO_COLOR
之外实施,对吧?如何解决这个问题,是否可能在Allegro Color结构之外重载。
答案 0 :(得分:3)
operator==
是二元运算符,但您只有一个参数。试试这个:
bool operator==(const Color& _col, const Color& rhs) { ... }
<小时/> Postscript :此表单的代码:
if ( condition )
return true;
else
return false;
在C ++中是不必要的冗长。最好这样做:
return condition;
在你的情况下,我更愿意看到:
return _col.a==rhs.a && _col.b==rhs.b && _col.g==rhs.g && _col.r==rhs.r;