在以下代码段中,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
在全局名称空间中声明了另一个枚举。至少,这样,我们明确了我们要引用的枚举。)
Car::Color getColor()
但是void Car::setColor(Color c)
因为setColor
我们已经有了说明符。