如何解决在类中声明一个枚举
-
如果
Color
是特定于Car
s 的东西,那么这就是您限制其范围的方式。如果您要拥有Color
其他类使用的另一个枚举,那么您不妨将其设为全局(或至少在外部Car
)。 -
没什么区别。如果有一个全局的,那么无论如何仍然使用本地的,因为它更接近当前范围。请注意,如果您在类定义之外定义这些函数,那么您需要
Car::Color
在函数的接口中明确指定。
解决方法
在下面的代码片段中,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
在全局命名空间中声明了另一个枚举。这样,至少,我们明确了我们所指的枚举。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。