【发布时间】:2015-09-16 08:44:22
【问题描述】:
我正在为我的 Arduino 用 C++ 编写游戏,最近我发现了在结构中重载运算符的乐趣。到现在为止还挺好!我现在坚持重载属性运算符的语法。我想实现这样的东西,如果我的 x 或 y 值增加超过屏幕宽度,我会将值包装回 0。非常感谢!
// My guess :(
x& operator++(x &newx, int){
if (x == SCREEN_WIDTH - 1)
return 0;
else
return x + 1;
}
我的结构定义是:
struct point_t
{
uint8_t x;
uint8_t y;
x& operator++(x &newx, int){
if (x == SCREEN_WIDTH - 1)
return 0;
else
return x + 1;
}
point_t& operator=(const point_t &p)
{
x = p.x;
y = p.y;
return *this;
}
bool operator==(const point_t &p) const
{
return (x == p.x && y == p.y);
}
bool operator!=(const point_t &p) const
{
return !(x == p.x && y == p.y);
}
};
【问题讨论】:
-
你能发布你的调用代码应该是什么样子吗?我不太明白应该如何使用该运算符。
-
但是
x不是类型? -
嗨!非常感谢!我要做的是调用 mypoint.x++ 或 mypoint.y++ ,当 x 或 v 大于某个最大值时,运算符中的代码会自动将值设置为 0 而不是递增
-
我想重载结构体的x++、x--、y++和y--属性,这样可以保持一个合适的范围。
标签: c++ struct properties