现在我们有这样两个枚举的声明
enum color0{
red,
green,
blue
};
enum color1{
red,
yellow,
blue
};
这样的代码是会发生错误的,red
和 blue
发生了冲突,因为他们都可以在全局直接访问到,
对于这种情况我们就可以使用带作用域的枚举值, 其实就是加了一个 class
关键字
示例
enum class color0{
red,
green,
blue
};
enum class color1{
red,
yellow,
blue
};
这时候我们的代码就可以正常编译通过了,但是我们不可以在全局直接访问到枚举值了。
如果想访问枚举值,要加作用域
示例
color0::red;
总结
带作用的枚举值是c++11中添加的新特性,它解决了不同枚举值之间重名的问题,也让代码的层次更为清晰,减少我们在编码过程中可能出现的错误。
语法
//声明
enum class 枚举名{
枚举值...
}
// 访问
枚举名::枚举值;