微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在类中声明一个枚举

如何解决在类中声明一个枚举

  1. 如果Color是特定于Cars 的东西,那么这就是您限制其范围的方式。如果您要拥有Color其他类使用的另一个枚举,那么您不妨将其设为全局(或至少在外部Car)。

  2. 没什么区别。如果有一个全局的,那么无论如何仍然使用本地的,因为它更接近当前范围。请注意,如果您在类定义之外定义这些函数,那么您需要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-tr​​icks-2-better-enums 。

(2) 在这个例子中,当
类中工作时,最好将枚举编码为Car::Color,还是就Color足够了?(我认为前者更好,以防万一Color在全局命名空间中声明了另一个枚举。这样,至少,我们明确了我们所指的枚举。)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。