class A {
public: enum class { HELLO, WORLD };
};
众所周知,在一个class
,声明一个简单的enum
(而不是enum class
) 是一个更好的主意,因为它已经用class
鉴别。但上面的说法仍然是有效的C++0x
签名。现在如何访问未命名的enum class
外部 ?
int i = A::HELLO; // error: ‘HELLO’ is not a member of ‘A’
事实上,这是无效的。 C++0x FDIS 说 (9.2p1)
除了用于声明友元 (11.3) 或将基类成员的名称引入派生类 (7.3.3) 外,成员声明声明类的成员,并且每个此类成员声明应至少声明班级的一个成员名称。
在您的情况下,没有将枚举器名称引入类的范围,也没有引入枚举名称。因此,该成员声明根本没有引入任何成员名称。
编辑:实际上,对枚举声明有更直接的禁止。 7.2p2:
可选的标识符在作用域枚举的声明中不得省略。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)