【发布时间】:2017-01-15 16:36:56
【问题描述】:
以下代码在 GCC 4.9.1 中无法编译:
class A
{
protected:
virtual void f() {}
};
class B : public A
{
protected:
virtual void f() override { A* a = new A; a->f(); }
};
我得到以下信息:
header.h: In member function 'virtual void B::f()':
header.h:51:17: error: 'virtual void A::f()' is protected
我希望它能够编译。
为什么会失败?有没有比公开 f() 更好的方法?
【问题讨论】:
标签: c++ protected virtual-functions