c++ 中带作用域的枚举值

默认分类 · 2024-05-03 · 56 人浏览

现在我们有这样两个枚举的声明

enum color0{
    red,
    green,
    blue
  
};

enum color1{
    red,
    yellow,
    blue
};

这样的代码是会发生错误的,redblue 发生了冲突,因为他们都可以在全局直接访问到,
对于这种情况我们就可以使用带作用域的枚举值, 其实就是加了一个 class 关键字
示例

enum class color0{
    red,
    green,
    blue
  
};

enum class color1{
    red,
    yellow,
    blue
};

这时候我们的代码就可以正常编译通过了,但是我们不可以在全局直接访问到枚举值了。
如果想访问枚举值,要加作用域
示例

color0::red;

总结

带作用的枚举值是c++11中添加的新特性,它解决了不同枚举值之间重名的问题,也让代码的层次更为清晰,减少我们在编码过程中可能出现的错误。
语法

//声明
enum class 枚举名{
    枚举值...
}
// 访问
枚举名::枚举值;
c++ 语法
Theme Jasmine by Kent Liao