如果枚举成员如何在枚举之外访问,因为所有成员范围都限于其阻止。
#include<iostream>
enum{MON,TUE,WED};
using namespace std;
int main(){
cout << TUE;//How TUE is accessed since it has to be limited to enum's scope
return 0;
}
枚举成员的范围如何在枚举块之外,因为在类或结构中,其成员的范围仅限于它们定义的块。
既然我们没有创建枚举对象,那么当内存分配给枚举成员时呢?
答案 0 :(得分:3)
未编译的枚举泄漏在其定义它们的enum {}
大括号之外的名称,以及在您的情况下拥有作为全局作用域的枚举的作用域。这就是为什么你不能拥有与其中一个枚举同名的变量的原因。 Scoped enums不会将其名称泄露到定义它们的枚举范围之外。
答案 1 :(得分:2)
所有成员范围仅限于其块
不,C ++中enum
的情况并非如此:范围是定义enum
的namspace。在你的情况下,这就是全球。
C ++ 11以上的enum class
通过将enum
值本地化为class
来解决此问题。
答案 2 :(得分:2)