1

C ++ 11の厳密に型指定された列挙型を持たないVS2010を使用しています。強い型付けはなくても大丈夫ですが、やはり、クラスの名前空間から列挙型を除外したいと考えています。

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

私の質問は、これを達成するための最良の方法は何ですか?

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 に答える