iam*_*ind 5 c++ enums class c++11
class A {
public: enum class { HELLO, WORLD };
};
Run Code Online (Sandbox Code Playgroud)
知道了,在a里面class,声明一个简单的enum(而不是enum class)是一个更好的主意,因为它已经用class标识键入了.但仍然以上声明是有效的C++0x签名.现在如何访问一个未命名的enum class外部?
int i = A::HELLO; // error: ‘HELLO’ is not a member of ‘A’
Run Code Online (Sandbox Code Playgroud)
Joh*_*itb 10
实际上,这是无效的.C++ 0x FDIS说(9.2p1)
除了用于声明朋友(11.3)或将基类成员的名称引入派生类(7.3.3)之外,成员声明声明该类的成员,并且每个此类成员声明至少应声明该类的一个成员名称.
在您的情况下,类的范围中不会引入枚举器名称,也不会引入枚举名称.因此,该成员声明根本不会引入任何成员名称.
编辑:实际上,更直接禁止枚举声明.7.2p2:
在范围枚举的声明中不应省略可选标识符.