次のようなクラスがあります。
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 については知りません。
はい、クロスプラットフォーム プロジェクトに取り組んでいます。
私はこの解決策を見つけましたが、それは... 重いようです。
誰かがここで私を助けてくれることを願っています:)