Dans l'extrait de code suivant, l'élément Color
est déclaré dans l'enum Car
afin de limiter la portée de l'énumération et de ne pas "polluer" l'espace de noms global.
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) Est-ce une bonne façon de limiter le champ d'action de la Color
enum ? Ou bien, dois-je le déclarer en dehors de l'enum Car
mais éventuellement dans son propre espace de noms ou sa propre structure ? Je suis tombé sur cet article aujourd'hui, qui préconise cette dernière solution et aborde quelques points intéressants concernant les enums : http://gamesfromwithin.com/stupid-c-tricks-2-better-enums .
(2) Dans cet exemple, lorsque l'on travaille sur la classe, est-il préférable de coder l'enum en tant que Car::Color
ou simplement Color
(Je suppose que la première solution est la meilleure, au cas où il y aurait une autre solution). Color
déclarée dans l'espace de noms global. De cette façon, au moins, nous sommes explicites quant à l'enum auquel nous nous référons).