0

私は現在ダイヤモンドのデザインを持っており、関連する質問をここで見ました

その質問では、クラス B とクラス C がクラス A から仮想的に継承されていると仮定します。そのため、クラス D では、仮想関数を呼び出す必要がある場合、どちらを呼び出す必要があるかを指定する必要があります。

D::foo()
{
  B::foo(); //specify foo() in B
}

私のダイヤモンドの設計では、これらの関数が正しい B または C の親クラス関数によって呼び出されるようにするために、多くの仮想関数を書き直す必要があります。

よくありません。多くの繰り返し作業を行う必要があります。子クラスがある場合、クラス D で B の foo() を呼び出すことができますが、上記の例を書き直すことはできません。

4

2 に答える 2

-3

テンプレートクラスがここでうまくいくと思います。

http://www.cplusplus.com/doc/tutorial/templates/

于 2013-11-15T22:47:18.977 に答える