在下面的代码片段中,
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
中已经有指定了。 - Matthieu M.