无法访问嵌套私有枚举的枚举
Can't access enumerands of nested private enum
编辑:好的,对不起各位。误报。这是Intellisense告诉我它是错误的,但当我将其提取到可编译文件中时,它编译得很好(尽管Intellisense仍然抱怨(。
我正在使用Microsoft Visual Studio 2013编译一个具有某些内部状态的C++类;(比方说(颜色和纹理。每个枚举都有有限的有效值,所以我使用的是好的旧类型安全枚举,并且因为每个枚举都包含一个None
值,所以使用的是新的C++/11语法;enum class
,因此枚举器的作用域将为枚举类型,而不是包含类:
Color
和Texture
类型是实现细节,所以我不想将它们公开,但将它们公开会阻止我访问任何枚举对象。
class MyClass
{
private:
enum class Color {
None, Red, Green
} _color;
enum class Texture {
None, Smooth, Rough
} _texture;
public:
MyClass()
: _color(Color::Green)
---------- <== ERROR: Member is inaccessible
, _texture(Texture::Rough)
-------------- <== ERROR: Member is inaccessible
{
}
};
如果Color
是一个私有嵌套的类定义,我可以在内部类中包含一个"友元类MyClass"声明,但似乎没有这样的语法对枚举有效。
有人能解释为什么这不起作用,以及应该如何完成吗?
您的代码还可以!
您的IDE似乎不支持C++11
尝试在IDE 上启用C++11
相关文章:
- 在模板类内部定义的枚举上的嵌套类的部分专用化
- 为什么 clang 不允许通过实例访问嵌套枚举类?
- 在嵌套名称说明符中使用枚举(编译器警告)
- 用于枚举绑定但未连接的套接字的 API
- 为什么可以获取此枚举成员值,而不必先深入研究嵌套枚举
- 为了简洁起见,在另一个文件中定义前向声明的嵌套结构/类/枚举
- POD 类中的嵌套枚举是否使它不是 POD
- 由于嵌套了枚举类,C++循环依赖关系
- 嵌套枚举类型的Postfix增量器重载
- 为嵌套在类中的枚举定义运算符
- 内部类访问外部类嵌套枚举
- 对嵌套枚举的c++操作
- 无法解析嵌套枚举
- 操作符++用于嵌套私有枚举-哪个编译器是正确的
- 如何将一个类的嵌套枚举用作另一个类的嵌套枚举
- 是否存在用于嵌套枚举类的接口机制
- 如何使用嵌套枚举实现代码重用
- 为什么无法推导出嵌套在模板类中的枚举的模板参数?
- 无法访问嵌套私有枚举的枚举
- 使用嵌套C++类和枚举的优点和缺点