编辑:好的,对不起伙计们。误报。这是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
是一个私有嵌套类定义,我可以在内部类中包含一个'friend class MyClass'声明,但是这样的语法似乎对枚举无效。
有人可以解释为什么这不起作用,以及假设如何完成?
答案 0 :(得分:1)
你的代码还可以!
您的IDE似乎不支持C ++ 11
尝试在IDE上启用C ++ 11