1

我使用 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 之前,最好的方法是什么?

4

2 回答 2

3
namespace ExampleColor {
   enum Color {
     red,
     green,
     blue
   };
}

class Example {
   int Rainbows{ExampleColor::Color x = ExampleColor::red};
};
于 2013-03-05T06:04:07.877 回答
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;
}
于 2013-03-05T06:14:20.607 回答