0

私は、この方法で可能だと思ったJavaの「スーパー」呼び出しに似たものを完成させようとしていました。

public ref class base {

public: base(){}

protected: virtual void funct()
{
   MessageBox::Show("base funct");
}
};

public ref class derived : public base
{
public: derived() : base(){}

protected: virtual void funct() new
{
((Base^)this)->funct();
///some work
}
};

しかし、「候補関数にアクセスできません」というエラーが表示されます。「保護された」修飾子は、すべてのサブクラスの基本クラス要素にアクセスを提供しませんか?違いがあるかどうかはわかりませんが、オーバーライドしたいBaseクラスのメソッドはBaseにも継承されます。

4

1 に答える 1

1

構文が正しくありません。このような基本関数を呼び出すことができます。

base::funct();

キャスト後、のインスタンスがあるため、文句を言いますbase。関数は保護されているため、のfunct()特定のインスタンスで呼び出すことはできませんbase

于 2012-07-23T22:02:26.903 に答える