问题描述
我在编码时遇到了这个问题,我不确定为什么会这样。 考虑这段代码
案例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。