一个类中的枚举,具有明确的范围,前C ++ 11?

时间:2013-03-05 06:01:06

标签: c++ visual-studio-2010 enums namespaces

我使用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之前实现这一目标的最佳方法是什么?

2 个答案:

答案 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;
}