我在编码时遇到过这个问题,我不确定为什么会这样。考虑这个代码
#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::没有必要同时使用枚举?
不,test::不是必需的,因为enum test声明了一个无作用域的枚举。test::当您像这样定义作用域枚举时,将变得必要:
enum class test {...};
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,另请参阅https://en.cppreference.com/w/cpp/language/enum。