【发布时间】:2011-03-25 22:46:54
【问题描述】:
我正在尝试重载一些运算符:
/* Typedef is required for operators */
typedef int Colour;
/* Operators */
Colour operator+(Colour colour1, Colour colour2);
Colour operator-(Colour colour1, Colour colour2);
Colour operator*(Colour colour1, Colour colour2);
Colour operator/(Colour colour1, Colour colour2);
每次尝试重载时都会出现此错误:
expected '=', ',', ';', 'asm' or '__attribute__' before '+' token
我找不到任何关于运算符重载的好文档。谷歌搜索的结果是使用类的 C++ 教程。在 C 中没有类。谁能帮我?谢谢。
【问题讨论】:
-
只是不要:)。
struct RGB {int8_t red, green, blue;};有什么问题。你真的需要所有的元数据吗? -
即使 C 支持运算符重载:operator* 和 operator/ 对颜色有意义吗?
-
@Doc Brown- 为什么没有意义?一旦运算符重载,它们可能意味着任何东西,而不仅仅是“乘”和“除”。
-
@bta:同意,但是当它们不意味着乘除时,为什么还要为重载而烦恼呢?即使在 C++ 中,当运算符不符合其原始含义时,使用运算符重载也是非常糟糕的风格。
-
"operator* 和 operator/ 对颜色有意义吗?"也许是 Alpha(预)乘法?