Im folgenden Codeausschnitt wird die Color
Aufzählung innerhalb der Car
Klasse deklariert , um den Umfang der Aufzählung einzuschränken und zu versuchen, den globalen Namespace nicht zu "verschmutzen".
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) Ist dies ein guter Weg, um den Umfang der Color
Aufzählung einzuschränken? Oder sollte ich es außerhalb der Car
Klasse deklarieren , aber möglicherweise innerhalb ihres eigenen Namespace oder seiner eigenen Struktur? Ich bin heute gerade auf diesen Artikel gestoßen, der sich für Letzteres einsetzt und einige nette Punkte zu Aufzählungen bespricht: http://gamesfromwithin.com/stupid-c-tricks-2-better-enums .
(2) Ist es in diesem Beispiel am besten , wenn Sie innerhalb der Klasse arbeiten, die Aufzählung als zu codieren Car::Color
oder würde dies nur Color
ausreichen? (Ich gehe davon aus, dass Ersteres besser ist, nur für den Fall, dass Color
im globalen Namespace eine andere Aufzählung deklariert ist. Auf diese Weise geben wir zumindest die Aufzählung an, auf die wir uns beziehen.)
Car::Color getColor()
abervoid Car::setColor(Color c)
weil in habensetColor
wir schon den spezifizierer.