无法访问嵌套私有枚举的枚举

Can't access enumerands of nested private enum

本文关键字:枚举 嵌套 访问      更新时间:2023-10-16

编辑:好的,对不起各位。误报。这是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是一个私有嵌套的定义,我可以在内部类中包含一个"友元类MyClass"声明,但似乎没有这样的语法对枚举有效。

有人能解释为什么这不起作用,以及应该如何完成吗?

您的代码还可以!

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

尝试在IDE 上启用C++11