1

我在某些A类的公共部分有枚举。我想在B类中使用这个枚举。是否可以在不指定 *A::enum_value* 的情况下使其可访问?所以我可以只使用 *enum_value*。

using A::enumname;

B类内部无法编译。

4

2 回答 2

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 {
};
于 2013-04-12T14:14:14.917 回答
0

没有直接将所有枚举值从一个地方导入到另一个地方的好方法。在这种情况下,我建议将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; }
};
于 2013-04-12T14:17:55.547 回答