我在某个班级 A 的公开部分中有枚举。我想在课程 B 中使用此枚举。是否可以在不指定* A :: enum_value *的情况下使其可访问?所以我只能使用* enum_value *。
using A::enumname;
内部类 B 中的无法编译。
答案 0 :(得分:1)
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,你可以将枚举提取到A和B都可以使用的基类中:
struct AEnum {
enum enumname { enum_value1, enum_value2 };
};
struct A : AEnum {
};
struct B : BEnum {
};
答案 1 :(得分:0)
没有好办法直接将所有枚举值从一个地方导入另一个地方。在这种情况下,我建议将A
的枚举包装到嵌套类中,然后键入 到B
。
例如:
class A
{
public:
struct UsefulEnumName
{
enum Type { BAR };
};
};
class B
{
typedef A::UsefulEnumName UsefulEnumName;
UsefulEnumName::Type foo() const { return UsefulEnumName::BAR; }
};