私は現在ダイヤモンドのデザインを持っており、関連する質問をここで見ました
その質問では、クラス B とクラス C がクラス A から仮想的に継承されていると仮定します。そのため、クラス D では、仮想関数を呼び出す必要がある場合、どちらを呼び出す必要があるかを指定する必要があります。
D::foo()
{
B::foo(); //specify foo() in B
}
私のダイヤモンドの設計では、これらの関数が正しい B または C の親クラス関数によって呼び出されるようにするために、多くの仮想関数を書き直す必要があります。
よくありません。多くの繰り返し作業を行う必要があります。子クラスがある場合、クラス D で B の foo() を呼び出すことができますが、上記の例を書き直すことはできません。