在下面的代码片段中,Color枚举是在Car类中声明的,以便限制枚举的范围并尽量不"污染"全局命名空间.
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;
};
Run Code Online (Sandbox Code Playgroud)
(1)这是限制Color枚举范围的好方法吗?或者,我应该在Car类之外声明它,但可能在它自己的命名空间或结构中声明它?我今天刚刚看到这篇文章,主张后者并讨论关于枚举的一些好点:http: //gamesfromwithin.com/stupid-c-tricks-2-better-enums.
(2)在这个例子中,当在类中工作时,最好是将枚举编码为Car::Color,还是只需要Color?(我假设前者更好,以防万一Color在全局命名空间中声明了另一个枚举.这样,至少,我们明确指出我们所指的枚举.)
有一种或多种方法的工会有什么问题吗?还是要注意什么?(我可以看到构造函数/析构函数因精神分裂症原因而存在问题)