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

0 c++ enums mingw

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

情况1

#include<iostream>

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

int main(){
    std::cout << a;
    return 0x1;
}
Run Code Online (Sandbox Code Playgroud)

案例二

#include<iostream>

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

int main(){
    std::cout << test::a;
    return 0x1;
}
Run Code Online (Sandbox Code Playgroud)

为什么代码都能正确编译和执行?使用test::没有必要同时使用枚举?

chu*_*ill 7

不,test::不是必需的,因为enum test声明了一个无作用域的枚举。test::当您像这样定义作用域枚举时,将变得必要:

enum class test {...};
Run Code Online (Sandbox Code Playgroud)

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