在下面的代码片段中,在 Car
类中声明了 Color
枚举,以便限制枚举的范围,并尽量不“污染”全局命名空间。
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)这是限制 Color
枚举范围的好方法吗?或者,我是否应该在 Car
类之外声明它,但可能在它自己的名称空间或结构中声明它?我今天刚刚看到这篇文章,它提倡后者,并讨论了一些关于枚举的好点: http://gamesfromwithin.com/stupid-c-tricks-2-better-enums。
(2)在这个例子中,当使用 内心类时,最好将枚举编码为 Car::Color
,还是仅仅使用 Color
就足够了?(我假设前者更好,以防在全局名称空间中声明了另一个 Color
枚举。这样,至少我们对所引用的枚举是明确的。)