无法从外部访问父类的枚举

时间:2019-09-23 16:01:21

标签: c++ class enums access

我要访问从其基类继承的“类”枚举,但会出错。

我必须使用Base::One,而不是Extended::One

但是其他人不了解Base类,他们只知道我与他们一起发布的Extended类。

如何使用Extended::One访问所有基类的枚举?

class Base {
    public:
    enum Type {
        One,
        Two
    };
};

class Extended : Base {

};

int main() {
    Extended::One; // ERROR: constant Base::One is inaccessible

    return 0;
}

2 个答案:

答案 0 :(得分:4)

您不小心使用了private inheritance。要解决此问题,请按如下所示定义Extended

class Extended : public Base {

};

答案 1 :(得分:1)

类型在Base中可能是公共的,但是Base本身不是Extended的公共基类,因此您的主函数对此一无所知。

如果其他类需要使用枚举,为什么不在全局范围内定义枚举?