Dans l'extrait de code suivant, l' Color
énumération est déclarée dans la Car
classe 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 Car
classe, 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 Color
suffirait-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 quesetColor
nous avons déjà le spécificateur.