Im folgenden Codeausschnitt wird die ColorAufzählung innerhalb der CarKlasse 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 ColorAufzählung einzuschränken? Oder sollte ich es außerhalb der CarKlasse 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::Coloroder würde dies nur Colorausreichen? (Ich gehe davon aus, dass Ersteres besser ist, nur für den Fall, dass Colorim 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 habensetColorwir schon den spezifizierer.