【发布时间】:2011-01-31 00:30:24
【问题描述】:
在下面的代码 sn-p 中,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;
};
(1) 这是限制Color 枚举范围的好方法吗?或者,我应该在 Car 类之外声明它,但可能在它自己的命名空间或结构中?我今天刚看到这篇文章,它提倡后者并讨论了一些关于枚举的好点:http://gamesfromwithin.com/stupid-c-tricks-2-better-enums。
(2) 在本例中,当在类中工作时,最好将枚举编码为Car::Color,还是只使用Color 就足够了? (我认为前者更好,以防万一在全局命名空间中声明了另一个 Color 枚举。这样,至少,我们明确了我们所指的枚举。)
【问题讨论】:
标签: c++ class enums namespaces scope