班级方向
class Direction
{
public:
enum value
{
UP,
RIGHT,
DOWN,
LEFT,
STAY
};
};
Run Code Online (Sandbox Code Playgroud)
类点
#include "Direction.h"
class Point {
int x , y;
public:
Point() { x=0; y=0; };
Point(int x1 , int y1) : x(x1) , y(y1) {};
void setX(int newX) { x = newX; };
void setY(int newY) { y = newY; };
int getX() { return x; }
int getY() { return y; }
void move(Direction d) {
if(d==UP);
};
Run Code Online (Sandbox Code Playgroud)
问题是if(d==UP)我不明白如何检查我收到错误检查的条件.
有任何想法吗?任何帮助将不胜感激.
UP在内部声明class Direction,所以在该范围之外你应该写Direction::UP它来引用它:
if (...something... == Direction::UP)
...
Run Code Online (Sandbox Code Playgroud)
您的Direction类创建了value枚举类型,但还没有任何数据成员,因此d您不清楚要比较哪些内容Direction::UP.您可以通过在最终};输入之前插入一个额外的行来添加数据成员class Direction:
value value_;
Run Code Online (Sandbox Code Playgroud)
然后你的比较将成为:
if (d.value_ == Direction::UP)
...
Run Code Online (Sandbox Code Playgroud)
所有这一切,如果你class Direction不打算包含除了之外的任何东西enum,你可以考虑完全摆脱类部分并简单地单独声明枚举:
enum Direction { UP, ... };
Run Code Online (Sandbox Code Playgroud)
然后您的比较将简化为:
if (d == UP)
...
Run Code Online (Sandbox Code Playgroud)