我不能在我的基类中调用protected函数.为什么?它看起来像这样:
class B : B2
{
public:
virtual f1(B*)=0;
protected:
virtual f2(B*) { codehere(); }
}
class D : public B
{
public:
virtual f1(B*b) { return f2(b); }
protected:
virtual f2(B*b) { return b->f2(this); }
}
Run Code Online (Sandbox Code Playgroud)
在msvc中我得到错误错误C2248:'name :: class :: f2':无法访问类'name :: class'中声明的受保护成员
在gcc中我得到错误:'virtual int name :: class :: f2()'受到保护.
这是为什么?我认为受保护成员的要点是派生类调用.