クラス内で列挙型を宣言する
次のコードスニペットでは、Color列挙型Carのスコープを制限し、グローバル名前空間を「汚染」しないようにするために、列挙型がクラス内で宣言されています。 class Car { public: enum Color { RED, BLUE, WHITE }; void SetColor( Car::Color color ) { _color = color; } Car::Color GetColor() const { return _color; } private: Car::Color _color; }; (1)これはColor列挙型の範囲を制限する良い方法ですか?または、Carクラス外で宣言する必要がありますが、独自の名前空間または構造内で宣言する必要がありますか?私は本日この記事に出くわしました。後者は、後者を支持し、列挙に関するいくつかの良い点を議論しています:http : //gamesfromwithin.com/stupid-c-tricks-2-better-enums。 (2)この例では、クラス内で作業する場合、列挙型をとしてコーディングするのが最善ですかCar::Color、それともColor十分ですか?(Colorグローバル名前空間で別の列挙型が宣言されている場合に備えて、前者のほうが良いと思います。少なくとも、参照している列挙型については明示的です。)