无法访问嵌套的私有枚举

时间:2015-06-04 23:19:57

标签: c++ c++11 enums

编辑:好的,对不起伙计们。误报。这是Intellisense告诉我这是错误的,但当我将其提取到一个可编译的文件中时,它编译得很好(尽管Intellisense仍然抱怨)。

我正在使用Microsoft Visual Studio 2013来编译具有某种内部状态的C ++类; (让我们说)颜色纹理。每个都有有限数量的有效值,所以我使用旧的类型安全枚举,并且因为每个枚举包含None值,我使用新的C ++ / 11语法; enum class,因此枚举将限定为枚举类型而不是包含类:

ColorTexture类型是实现细节,因此我不希望将它们公开,但将它们设为私有会阻止我访问任何枚举。

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'声明,但是这样的语法似乎对枚举无效。

有人可以解释为什么这不起作用,以及假设如何完成?

1 个答案:

答案 0 :(得分:1)

你的代码还可以!

您的IDE似乎不支持C ++ 11

尝试在IDE上启用C ++ 11