C++的enum class怎么用
时间: 2023-09-29 12:03:18 浏览: 117
enum class 是 C++11 引入的一种新类型,用于定义枚举类型。其用法类似于枚举类型,但是具有更加严格的类型检查和作用域限制。下面是一个示例:
```
#include <iostream>
enum class Color {
Red,
Green,
Blue
};
int main() {
Color c = Color::Red;
if (c == Color::Red) {
std::cout << "The color is red" << std::endl;
}
return 0;
}
```
在上面的示例中,我们定义了一个名为 Color 的枚举类型,其中包含三种颜色:Red、Green 和 Blue。在 main() 函数中,我们创建了一个名为 c 的变量,并将其初始化为 Red。然后我们使用 if 语句检查 c 是否等于 Red,如果是,则输出一条消息。
需要注意的是,由于 enum class 具有作用域限制,因此在使用枚举值时需要加上枚举类型的前缀。例如,我们使用 Color::Red 来表示红色。这也是为什么 enum class 可以更好地避免命名冲突的原因。
相关问题
C++ enum class
C++中的enum class是一种强类型的枚举,它在C++11标准中引入。它与传统的枚举相比具有更强的类型检查和作用域限制。使用enum class可以避免命名冲突,并且更加安全和可靠。
enum class的语法如下:
```cpp
enum class EnumName {
Enumerator1,
Enumerator2,
// ...
};
```
其中EnumName是枚举类型的名称,Enumerator1、Enumerator2等是枚举值。使用enum class定义的枚举值必须通过EnumName::Enumerator的形式进行访问。
例如:
```cpp
enum class Color {
Red,
Green,
Blue
};
Color c = Color::Red;
```
在上面的例子中,Color是枚举类型名称,Red、Green和Blue是枚举值。我们可以将Color::Red赋值给变量c,但不能直接将Red赋值给变量c。
这样做的好处是可以更好地控制枚举值的作用域,可以避免命名冲突,并且能够提供更好的类型安全性。
c++ enum class 获取值
在C++中,使用enum class声明的枚举类型是具有强类型的。因此需要使用作用域分辨符号访问其中的值。比如,如果我们有如下的枚举类型:
enum class Fruit { Apple, Orange, Banana };
那么我们需要使用作用域分辨符号访问其中的值,例如:
Fruit my_fruit = Fruit::Apple;
在这个例子中,我们声明了一个Fruit类型的变量my_fruit,并将它赋值为枚举值Fruit::Apple。这样,我们就可以使用my_fruit代表枚举值Apple。
当然,我们也可以使用static_cast把枚举类型转换为int或其他整型类型:
int my_fruit_int = static_cast<int>(my_fruit);
这样,我们就可以把my_fruit变量转换为int类型的值,然后可以对其进行计算或其他操作。
总之,使用enum class声明的枚举类型是具有强类型的,访问其中的值需要使用作用域分辨符号,同时也可以使用static_cast将枚举类型转换为其他整型类型。
阅读全文