重複の可能性:
基本クラスで保護された関数を呼び出せませんか?
これを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
それが経由しない限りthis
ですか?
編集:申し訳ありませんが、私の悪い。これはすべて仕様によるものです。それが機能した他の場所では、私が気付かなかった友情がありました。投票して終了してください。