可能重复:
不能调用基类保护函数?
在 g++ 下编译:
class A
{
protected:
void f(){}
};
class B: public A
{
void g()
{
A a;
f(); //This works
a.f(); //Error: "A::F() is protected"
this->f(); //Works
((A*)this)->f(); //Same error
}
};
为基类的非 this 对象调用受保护函数时出错。编译器是 GCC - 但相同的代码在其他风格的 GCC 下工作。请问这是怎么回事 - 因为当调用基类的受保护方法时,verboten
除非它是 via this
?
编辑:对不起,我的错。这都是规范;在它起作用的另一个地方,有一种我没有注意到的友谊。请投票关闭。