2013-04-12 94 views
1

我有一些類的公共部分枚舉A。我想在類B中使用此枚舉。是否可以在不指定* A :: enum_value *的情況下使其可訪問?所以我可以使用* enum_value *。使用來自其他類的枚舉沒有classname ::

using A::enumname; 

內不會編譯。

+1

你可以簡單地刪除從A類枚舉? – duDE

回答

0
If you only need certain values, you can do: 

struct B { 
    static const A::enumname 
    enum_value1 = A::enum_value1, 
    enum_value2 = A::enum_value2; // etc. 
}; 

如果你可以修改,可以提取枚舉成可以由A和B都可以使用的基類:

struct AEnum { 
    enum enumname { enum_value1, enum_value2 }; 
}; 

struct A : AEnum { 
}; 

struct B : BEnum { 
}; 
0

有直接導入所有的枚舉值沒有什麼好辦法從一個地方到另一個地方。在這種情況下,我會建議將A的enum包裝到一個嵌套類中,然後將鍵入B

例如:

class A 
{ 
public: 
    struct UsefulEnumName 
    { 
     enum Type { BAR }; 
    }; 
}; 

class B 
{ 
    typedef A::UsefulEnumName UsefulEnumName; 
    UsefulEnumName::Type foo() const { return UsefulEnumName::BAR; } 
};