を使用して、私たちが触れることができない、いくつかの(レガシー)コードを、仮定してみましょう姉妹継承
struct B{
public:
void f(){}
};
を宣言し、私たちは
struct A{
public:
virtual void f()=0;
};
は、サブクラスの呼び出しを行うことが可能である持っていると仮定してみましょうB ::明示的にFを呼び出すことなく、F()、つまり代わりに
struct C: public A, public B{
void f(){
B::f();
}
};
のようなものを持ちます
struct C:virtual public A,virtual public B{
};
(コンパイラAのために、この最後のクラスが抽象的であることに注意してください:: fが定義されていない)
'B :: f()'の何が問題なのですか?それは 'B :: f()'を呼び出す正しい方法です。 –
あなたは100個の関数を持っていると想像してください;) –
いいえ、基本メンバ関数が別の基本クラスの純粋仮想関数を実装することはできません。それだけでは機能しません。あなたが持っているものは大丈夫です。 –