如何使用枚举来检查这种情况 - C++

JaV*_*aPG 1 c++ enums

班级方向

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)我不明白如何检查我收到错误检查的条件.

有任何想法吗?任何帮助将不胜感激.

Ton*_*roy 8

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)