1
我有一些類的公共部分枚舉A。我想在類B中使用此枚舉。是否可以在不指定* A :: enum_value *的情況下使其可訪問?所以我可以使用* enum_value *。使用來自其他類的枚舉沒有classname ::
using A::enumname;
類乙內不會編譯。
我有一些類的公共部分枚舉A。我想在類B中使用此枚舉。是否可以在不指定* A :: enum_value *的情況下使其可訪問?所以我可以使用* enum_value *。使用來自其他類的枚舉沒有classname ::
using A::enumname;
類乙內不會編譯。
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 {
};
有直接導入所有的枚舉值沒有什麼好辦法從一個地方到另一個地方。在這種情況下,我會建議將A
的enum包裝到一個嵌套類中,然後將鍵入到B
。
例如:
class A
{
public:
struct UsefulEnumName
{
enum Type { BAR };
};
};
class B
{
typedef A::UsefulEnumName UsefulEnumName;
UsefulEnumName::Type foo() const { return UsefulEnumName::BAR; }
};
你可以簡單地刪除從A類枚舉? – duDE