Nel seguente frammento di codice, l' Colorenum viene dichiarato all'interno della Carclasse al fine di limitare l'ambito dell'enum e cercare di non "inquinare" lo spazio dei nomi globale.
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) È un buon modo per limitare la portata Colordell'enum? O dovrei dichiararlo al di fuori della Carclasse, ma possibilmente all'interno del suo spazio dei nomi o struttura? Ho appena trovato questo articolo oggi, che sostiene quest'ultimo e discute alcuni bei punti sugli enum: http://gamesfromwithin.com/stupid-c-tricks-2-better-enums .
(2) In questo esempio, quando si lavora all'interno della classe, è meglio codificare l'enum come Car::Coloro sarebbe Colorsufficiente? (Suppongo che il primo sia migliore, nel caso in cui ci sia un altro Colorenum dichiarato nello spazio dei nomi globale. In questo modo, almeno, siamo espliciti sull'enum a cui ci stiamo riferendo.)
Car::Color getColor()mavoid Car::setColor(Color c)perché insetColorabbiamo già l'identificatore.