Dalam cuplikan kode berikut, Color
enum dideklarasikan di dalam Car
kelas untuk membatasi ruang lingkup enum dan berusaha untuk tidak "mencemari" namespace 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) Apakah ini cara yang baik untuk membatasi ruang lingkup Color
enum? Atau, haruskah saya mendeklarasikannya di luar Car
kelas, tetapi mungkin di dalam namespace atau struct sendiri? Saya baru saja menemukan artikel ini hari ini, yang mendukung yang terakhir dan membahas beberapa poin bagus tentang enum: http://gamesfromwithin.com/stupid-c-tricks-2-better-enums .
(2) Dalam contoh ini, ketika bekerja di dalam kelas, apakah yang terbaik untuk kode enum sebagai Car::Color
, atau hanya Color
cukup? (Saya menganggap yang pertama lebih baik, kalau-kalau ada Color
enum lain yang dideklarasikan di namespace global. Dengan begitu, setidaknya, kami secara eksplisit tentang enum yang kami rujuk.)
Car::Color getColor()
tetapivoid Car::setColor(Color c)
karena disetColor
kita sudah memiliki specifier.