枚举
-
介绍枚举类型的定义。
enum Direction { UP, LEFT, DOWN, RIGHT }; Direction d = UP;
Version >= C++ 11
在 C++ 11 中,enum
可以可选地后跟 class
或 struct
来定义范围枚举 。此外,范围和未范围的枚举可以使用: T
在枚举名称后明确指定其基础类型,其中 T
指的是整数类型。
enum class Format : char {
TEXT,
PDF,
OTHER
};
Format f = Format::TEXT;
enum Language : int {
ENGLISH,
FRENCH,
OTHER
};
普通 enum
s 中的枚举数也可以在范围运算符之前,尽管它们仍然被认为属于 enum
定义的范围。
Language l1, l2;
l1 = ENGLISH;
l2 = Language::OTHER;
-
介绍一个*详细的类型说明符,*它指定以下名称是先前声明的枚举类型的名称。 (精心设计的类型说明符不能用于向前声明枚举类型。)即使用其他名称隐藏,也可以用这种方式命名枚举。
enum Foo { FOO }; void Foo() {} Foo foo = FOO; // ill-formed; Foo refers to the function enum Foo foo = FOO; // ok; Foo refers to the enum type
Version >= C++ 11
-
引入一个*不透明的枚举声明,*声明枚举而不定义它。它可以重新声明先前声明的枚举,也可以向前声明先前未声明的枚举。
首先声明为作用域的枚举以后不能声明为 unscoped,*反之亦然。*枚举的所有声明必须在基础类型中达成一致。
在向前声明未映射的枚举时,必须明确指定基础类型,因为在枚举器的值已知之前无法推断它。
enum class Format; // underlying type is implicitly int void f(Format f); enum class Format { TEXT, PDF, OTHER, }; enum Direction; // ill-formed; must specify underlying type