Dans l'extrait de code suivant, l' Colorénumération est déclarée dans la Carclasse afin de limiter la portée de l'énumération et d'essayer 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 un bon moyen de limiter la portée de l' Colorénumération? Ou devrais-je le déclarer en dehors de la Carclasse, mais éventuellement dans son propre espace de noms ou structure? Je viens de tomber sur cet article aujourd'hui, qui prône ce dernier et discute de quelques points intéressants sur les énumérations: http://gamesfromwithin.com/stupid-c-tricks-2-better-enums .
(2) Dans cet exemple, lorsque vous travaillez au sein de la classe, est-il préférable de coder l'énumération comme Car::Color, ou Colorsuffirait-il? (Je suppose que le premier est meilleur, juste au cas où il y aurait une autre Colorénumération déclarée dans l'espace de noms global. De cette façon, au moins, nous sommes explicites sur l'énumération à laquelle nous faisons référence.)
Car::Color getColor()maisvoid Car::setColor(Color c)parce quesetColornous avons déjà le spécificateur.