如何访问封装在类中的未命名"enum class"?
How to access unnamed "enum class" encapsulated inside a class?
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:
在作用域枚举的声明中,不应省略可选的标识符。
相关文章:
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 为什么未命名的结构内联变量在每个翻译单元中没有相同的地址?
- C++中未命名函数指针的语法
- 未命名的非类型模板参数有什么意义?
- C++包含函数标头会给出错误'__dest'未命名类型
- 不同C++文件中未命名命名空间中的名称可以引用同一个命名事物吗?
- 用于创建未命名实例的语法
- 错误:"cast"未命名类型void setCastDescription(std::string
- 我可以定义一个 constexpr 匿名/未命名变量吗?
- C++ 错误:(类名)未命名类型
- 如何访问嵌套在命名命名空间中的未命名命名空间变量?
- 未命名的函数参数用法
- 使用 std ::transform 构造 std::vector.返回未命名结果的可能性?
- 为什么将字符串输出到未命名的 std::ofstream 反而给了我一个十六进制数?
- 在多个 cpp 文件中重用未命名的命名空间函数
- C++ ,错误:命名空间'std'中的'shared_ptr'未命名模板类型
- src/caffe/parallel.cpp:70:1:错误:“参数”未命名类型
- 错误:'int_type'未命名类型 - 如何继承 typedefs 和用法
- 如何修复错误,迭代器未在此范围内声明,并且迭代器未命名类型'
- 如何访问封装在类中的未命名"enum class"?