【发布时间】:2015-06-04 23:19:57
【问题描述】:
编辑:好的,对不起各位。虚惊。这是 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 是一个私有嵌套class 定义,我可以在内部类中包含一个'friend class MyClass' 声明,但似乎没有这样的语法对枚举有效。 p>
有人可以解释为什么这不起作用,以及它是如何应该完成的?
【问题讨论】:
-
你用的是什么编译器?你是怎么编译的?