C ++中

时间:2017-08-29 11:51:17

标签: c++ memory enums scope

如果枚举成员如何在枚举之外访问,因为所有成员范围都限于其阻止。

    #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;
}
  1. 枚举成员的范围如何在枚举块之外,因为在类或结构中,其成员的范围仅限于它们定义的块。

  2. 既然我们没有创建枚举对象,那么当内存分配给枚举成员时呢?

3 个答案:

答案 0 :(得分:3)

未编译的枚举泄漏在其定义它们的enum {}大括号之外的名称,以及在您的情况下拥有作为全局作用域的枚举的作用域。这就是为什么你不能拥有与其中一个枚举同名的变量的原因。 Scoped enums不会将其名称泄露到定义它们的枚举范围之外。

答案 1 :(得分:2)

  

所有成员范围仅限于其块

不,C ++中enum的情况并非如此:范围是定义enum的namspace。在你的情况下,这就是全球

C ++ 11以上的enum class通过将enum值本地化为class来解决此问题。

答案 2 :(得分:2)

  

所有成员范围仅限于其块

没有

C ++中的enum与其定义的命名空间具有相同的范围,在您的情况下是全局范围。

你拥有的是unscoped enum。也许你对scoped enums感到困惑。

PS:The usage of anonymous enums