类中的枚举是静态的吗?

时间:2020-05-01 10:06:26

标签: c++ enums declaration enumerator

在下面,可以通过类的名称访问该类中的 enum 的值。(我什至没有实例化该类!)

class Shifting
{
public:
  enum Value: char
  {
    UP, RIGHT, DOWN, LEFT
  };

private:
  Value value_;
};


std::cout << Shifting::RIGHT << std::endl; // 1

这是否意味着类中的枚举是静态的?

如果没有,如何静态声明一个枚举?

1 个答案:

答案 0 :(得分:2)

enum Value: char
{
  UP, RIGHT, DOWN, LEFT
};

这是类型的声明。它不是封闭类的数据成员。该类只有这个私有数据成员。

Value value_;

枚举数据。

枚举声明声明命名的枚举器。但是它们又不是封闭类的数据成员。

如果要在类内声明嵌套结构,则相同。例如

struct A
{
    struct B
    {
        int x = 10;
    };

    B b;
};

这里只有A类的一个数据成员,即B b。结构声明中的数据成员仅提供结构B的声明。