Allegro中的相等运算符重载

Equality Operator Overloading in Allegro

本文关键字:运算符 重载 Allegro      更新时间:2023-10-16

我的一个朋友试图重载一个相等操作符来比较Allegro中的颜色,但是它不起作用,他得到错误"no match for operator=="这是在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_COLOR之外实现,对吧?如何解决这个问题,是否可以在Allegro Color结构体之外重载

operator==是一个二进制运算符,但是您只有一个参数。试试这个:

bool operator==(const Color& _col, const Color& rhs) { ... }


后记:此格式的代码:

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;