我使用VS2010,它没有C ++ 11的强类型枚举。强大的输入我可以没有,但同样,我想保留我的类命名空间中的枚举。
class Example{
enum Color{
red,
green,
blue
};
int Rainbows{
Color x = red; // this should be impossible
Color y = Color::green; // this is the only way at the enumerations
}
};
我的问题是,在C ++ 11之前实现这一目标的最佳方法是什么?
答案 0 :(得分:3)
namespace ExampleColor {
enum Color {
red,
green,
blue
};
}
class Example {
int Rainbows{ExampleColor::Color x = ExampleColor::red};
};
答案 1 :(得分:1)
我会尝试以下内容:
class Color
{
private:
int value;
Color(int newValue)
{
value = newValue;
}
public:
static Color red;
static Color green;
static Color blue;
};
Color Color::red = Color(1);
Color Color::green = Color(2);
Color Color::blue = Color(4);
int main(int argc, char * argv[])
{
Color color = Color::red;
}