
// 声明一个名为 Color 的强类型枚举,底层类型为 unsigned int
enum class Color : unsigned int {
RED, // 枚举值,通常是大写的
GREEN,
BLUE,
// 可以有其他枚举值
};
// 使用枚举类
int main() {
Color myColor = Color::RED; // 使用枚举类的作用域解析运算符 :: 来指定枚举值
// ... 其他代码 ...
return 0;
} enum class Color {
RED,
GREEN,
BLUE
}; Color color = Color::RED; int num = Color::RED; // 编译错误 int num = static_cast<int>(Color::RED); // 正确enum class Color : unsigned int {
RED = 1,
GREEN = 2,
BLUE = 4,
// 注意:这些值通常是用于位运算的,所以它们通常是 2 的幂
};在这个例子中,RED 的值为 1,GREEN 的值为 2,BLUE 的值为 4。这种设计通常用于位运算,允许你使用按位或(|)运算符组合多个颜色值。例如,Color(RED | BLUE) 将表示同时包含红色和蓝色的颜色。但是,请注意,这种用法需要谨慎处理,并确保底层类型具有足够的位来表示所有可能的组合。
enum class Direction {
UP,
DOWN
};
enum class TrafficLight {
RED, // 不会与Color::RED冲突
YELLOW,
GREEN
};在这个例子中,Direction::UP、Color::RED和TrafficLight::RED是三个完全不同的枚举值,分别属于不同的枚举类型。