gpt4 book ai didi

c++ - Allegro 中的相等运算符重载

转载 作者:行者123 更新时间:2023-11-30 03:05:50 24 4
gpt4 key购买 nike

我的一个 friend 试图在 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 结构之外重载。

最佳答案

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;

关于c++ - Allegro 中的相等运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7406284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com