Allegro中的等式运算符重载

时间:2011-09-13 17:56:59

标签: c++ operator-overloading allegro

我的一个朋友试图重载一个等于运算符来比较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结构之外重载。

1 个答案:

答案 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;