2011-12-01 100 views
5

在我的项目中,我有一个在类中定义的枚举,用于整个类。在重构期间,该枚举被移至另一个类。所以我只是typedef编在我原来的类,像这样:从其他类访问枚举值

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

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

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

回答

2

你把每个枚举到嵌套类,您可以在自己类中的typedef:

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

然后,它只是E::EnumType代替E但你得到充分的自动进口。

+1

你将如何访问枚举值?我仍然必须编写'E :: EnumType e = E :: e1;' –

+0

您必须编写它,我觉得这是一个小的代价,不需要重复枚举值,只要您使E a有意义的枚举名称。 –

0

如果你不在上面使用C++ 11,你可以看看enum类。