在我的项目中,我有一个在类中定义的枚举,在整个类中使用.在重构期间,该枚举被移动到另一个类.所以我只是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;
有没有办法避免这种情况,或者我是否必须将其复制到每个枚举值的出现中?
您将每个枚举放入一个嵌套类中,您可以在自己的类中键入定义:
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但你会得到完全自动导入。