什么是在C ++中使用枚举访问值的正确方法

问题描述

我在编码时遇到了这个问题,我不确定为什么会这样。 考虑这段代码

案例1

#include<iostream>

enum test{
a,b,c,d,e,f
};

int main(){
    std::cout << a;
    return 0x1;
}

案例2

#include<iostream>

enum test{
a,f
};

int main(){
    std::cout << test::a;
    return 0x1;
}

为什么代码都可以同时编译和正确执行?使用枚举时是否不需要使用test::

解决方法

否,test::不是必需的,因为enum test声明了 unscoped 枚举。当您定义这样的作用域枚举时,test::变得很有必要:

enum class test {...};

有关更多详细信息,另请参见https://en.cppreference.com/w/cpp/language/enum