使用来自另一个没有类名的类的枚举::

时间:2013-04-12 14:09:24

标签: c++ enums

我在某个班级 A 的公开部分中有枚举。我想在课程 B 中使用此枚举。是否可以在不指定* A :: enum_value *的情况下使其可访问?所以我只能使用* enum_value *。

using A::enumname;
内部类 B 中的

无法编译。

2 个答案:

答案 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; }
};