class 中的枚举是静态的吗?
Is the enum inside a class static?
在下文中,class中的enum的值可以通过class的名称访问。(我什至没有实例化 class!)
class Shifting
{
public:
enum Value: char
{
UP, RIGHT, DOWN, LEFT
};
private:
Value value_;
};
std::cout << Shifting::RIGHT << std::endl; // 1
这是否意味着 class 中的枚举是静态的?
如果不是,如何静态声明枚举?
这个
enum Value: char
{
UP, RIGHT, DOWN, LEFT
};
这是一个类型声明。它不是封闭 class 的数据成员。 class 只有这个私有数据成员。
Value value_;
枚举数据。
枚举声明声明了命名枚举数。但它们又不是封闭 class.
的数据成员
如果在 class 中声明嵌套结构,也是一样的。例如
struct A
{
struct B
{
int x = 10;
};
B b;
};
这里只有classA的一个数据成员B b。结构体声明里面的数据成员只提供了结构体B的声明。
在下文中,class中的enum的值可以通过class的名称访问。(我什至没有实例化 class!)
class Shifting
{
public:
enum Value: char
{
UP, RIGHT, DOWN, LEFT
};
private:
Value value_;
};
std::cout << Shifting::RIGHT << std::endl; // 1
这是否意味着 class 中的枚举是静态的?
如果不是,如何静态声明枚举?
这个
enum Value: char
{
UP, RIGHT, DOWN, LEFT
};
这是一个类型声明。它不是封闭 class 的数据成员。 class 只有这个私有数据成员。
Value value_;
枚举数据。
枚举声明声明了命名枚举数。但它们又不是封闭 class.
的数据成员如果在 class 中声明嵌套结构,也是一样的。例如
struct A
{
struct B
{
int x = 10;
};
B b;
};
这里只有classA的一个数据成员B b。结构体声明里面的数据成员只提供了结构体B的声明。