在C ++中是否有一种方法来定义枚举,以便在访问时它的值必须完全限定?

时间:2014-05-02 22:05:49

标签: c++ enums

对C ++枚举最困扰的事情之一是,可以在没有任何上下文的情况下访问枚举值,以便向读者提供正在访问的类型的指示。换句话说,如果我有:

typedef enum Color {NONE,RED,GREEN,...};

我可以将变量与" NONE"进行比较,例如,无需编写" Color :: NONE"。有没有办法以这样的方式定义枚举类型,以便要求值完全限定?例如,这就是C#所做的。

2 个答案:

答案 0 :(得分:4)

您可以使用新的enum class,但语义不一样。它也是C ++ 11/14的严格组成部分。

enum class type { t1, t2, t3 };

答案 1 :(得分:3)

将您的枚举放在名称空间中,并使用您想要使用的名称进行限定。

namespace Color{
  typedef enum thisNameDoesntMatter {NONE, RED, GREEN, ...};
}