我在某些A类的公共部分有枚举。我想在B类中使用这个枚举。是否可以在不指定 *A::enum_value* 的情况下使其可访问?所以我可以只使用 *enum_value*。
using A::enumname;
B类内部无法编译。
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 {
};
没有直接将所有枚举值从一个地方导入到另一个地方的好方法。在这种情况下,我建议将A
's enum 包装到一个嵌套类中,然后将其键入到B
.
例如:
class A
{
public:
struct UsefulEnumName
{
enum Type { BAR };
};
};
class B
{
typedef A::UsefulEnumName UsefulEnumName;
UsefulEnumName::Type foo() const { return UsefulEnumName::BAR; }
};