我要访问从其基类继承的“类”枚举,但会出错。
我必须使用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;
}
答案 0 :(得分:4)
您不小心使用了private inheritance。要解决此问题,请按如下所示定义Extended
:
class Extended : public Base {
};
答案 1 :(得分:1)
类型在Base中可能是公共的,但是Base本身不是Extended的公共基类,因此您的主函数对此一无所知。
如果其他类需要使用枚举,为什么不在全局范围内定义枚举?