使用具有相同名称的(unscoped)基类枚举初始化派生类枚举

时间:2014-12-16 13:45:54

标签: c++ inheritance enums

以下代码(也在ideone上)似乎不应该编译,但在MSVC 2008和GCC 4.8.2

#include<iostream>

struct Base
{
    enum State { ON = 11 , OFF = 22 , STANDBY = 33 };
};

struct Derived : Base
{
    enum State { ON = ON , OFF = OFF };  // Huh?
};

int main()
{
    std::cout << Derived::ON << std::endl;
}

是否符合标准?

1 个答案:

答案 0 :(得分:1)

enum State { ON = ON , OFF = OFF };  // Huh?
                  ^^

此时派生的重新定义尚未完成,因此使用的ON将来自Base。