从其他类访问枚举值

kin*_*nak 5 c++ enums typedef

在我的项目中,我有一个在类中定义的枚举,在整个类中使用.在重构期间,该枚举被移动到另一个类.所以我只是typedef在我的原始课程中编辑它,如下所示:

class A {
public:
  enum E {e1, e2};
};
class B {
public:
  typedef A::E E;
};
Run Code Online (Sandbox Code Playgroud)

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

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

Mar*_*k B 2

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

class A {
public:
  struct E { enum EnumType { e1, e2 } };
};
class B {
public:
  typedef A::E E;
};
Run Code Online (Sandbox Code Playgroud)

然后它只是E::EnumType代替,E但你会得到完全自动导入。