C++ の仮想継承は、ひし形の問題を防ぐ便利な方法です。ただし、すべての場合に適切に機能させることはできないようです。
これを説明するのは非常に難しいと思いますが、うまくいくことを願っています。問題を提示しましょう:
A は B を継承します。A は、C というクラス セットと D という別のクラス セットの基本クラスです。
問題は、クラスの C セットが B を中心に共通の機能を持っていることです。
私がやりたいことは不可能ですが、事実上Bを継承し、Cによって継承されるクラスEです。問題は次のとおりです。
この場合、A は事実上 B を継承していないため、機能しません。
A が事実上 B を継承する場合、D のすべてのクラスで B のコンストラクターを使用する必要があります。
結論:どの場合でも、重複したコードがあります。コードを複製せずにこの問題を解決するにはどうすればよいですか?