可能重複:
cannot call base class protected functions?基類的受保護的方法中的對象
下編譯此克++:
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
}
};
獲取關於調用用於受保護的功能的錯誤非基類的這個對象。編譯器是GCC - 但是在其他版本的GCC下工作的代碼相同。發生什麼事了,因爲在調用基類的受保護方法時,除非它通過this
,否則是verboten
?
編輯:對不起,我的壞。這是所有規格;在工作的另一個地方,我沒有注意到有一種友誼。請投票結束。
只需自己刪除它。 – ravenspoint
不能,它已被回答。 –