次のようなクラスがあります。
class Car
{
public:
Car();
// Some functions and members and <b>enums</b>
enum Color
{
Red,
Blue,
Black
};
Color getColor();
void setColor(Color);
private:
Color myColor;
}
したい:
Color
として値にアクセスしますColor::Red
。Car::Red
クラスに多くの列挙型、サブクラスなどがある場合、使用される コードを理解するのは本当に困難です。- タイプ
Color
を関数の引数または戻り値として 使用する - 変数型を使用
Color
するswitch
私は3つの部分的な解決策を知っています:
- 埋め込みクラス
Color
と列挙型を使用する - 埋め込まれた名前空間
Color
と列挙型を使用する - 使用する
enum class
1 と 2 の解決策は、加入の問題を解決しますが、 やColor::Red
のような機能は使用できません。Color getColor()
void setColor(Color)
3 ソリューションには問題があります: VS2010 はサポートしていませんenum class
。GCC v.4.1.2 もサポートしていません。それ以降のバージョンの gcc については知りません。
はい、クロスプラットフォーム プロジェクトに取り組んでいます。
私はこの解決策を見つけましたが、それは... 重いようです。
誰かがここで私を助けてくれることを願っています:)