从其他类访问枚举值

时间:2011-12-01 13:53:57

标签: c++ enums typedef

在我的项目中,我在类中定义了一个枚举,该类在整个类中使用。在重构期间,该枚举被移动到另一个类。所以我只是typedef在我原来的课程中编辑它,就像这样:

class A {
public:
  enum E {e1, e2};
};
class B {
public:
  typedef A::E E;
};

现在变量定义,返回值,函数参数等完美地工作。只有当我想要访问第二堂课中的枚举值时,我仍然必须使用环绕类的名称来限定它们, 例如E e = A::e1;

有没有办法避免这种情况,或者我是否必须将其复制到枚举值的每次出现中?

2 个答案:

答案 0 :(得分:2)

您将每个枚举放入一个嵌套类中,您可以在自己的类中键入def:

class A {
public:
  struct E { enum EnumType { e1, e2 } };
};
class B {
public:
  typedef A::E E;
};

然后它只是E::EnumType而不是E,但您可以完全自动导入。

答案 1 :(得分:0)

如果您不熟悉c ++ 11,可以查看枚举类。