在我的项目中,我在类中定义了一个枚举,该类在整个类中使用。在重构期间,该枚举被移动到另一个类。所以我只是typedef
在我原来的课程中编辑它,就像这样:
class A {
public:
enum E {e1, e2};
};
class B {
public:
typedef A::E E;
};
现在变量定义,返回值,函数参数等完美地工作。只有当我想要访问第二堂课中的枚举值时,我仍然必须使用环绕类的名称来限定它们,
例如E e = A::e1;
有没有办法避免这种情况,或者我是否必须将其复制到枚举值的每次出现中?
答案 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,可以查看枚举类。