最初に見つかった継承された宣言を使用するだけで、ダイヤモンドの問題を解決できないでしょうか? つまり、
公開クラスA { public virtual int getInt(); }; パブリック クラス B : パブリック A { public int getInt() {リターン 6;} }; パブリック クラス C : パブリック A { public int getInt() {リターン 7;} }; パブリック クラス D: パブリック B、パブリック C {};
forが最初にリストされているためclass D
、デフォルトで(あいまいな場合) ifを使用することはできませんか? UNIX やその他の OS で PATH 環境変数がどのように機能するか。PATH 変数内の異なる場所に同じ名前の 2 つのものが存在する場合、最初の場所がデフォルトで使用されます (別の方法で修飾されていない限り)。B
B::getInt()
D::getInt()
編集:「最初の」継承された宣言により、単純な左から右の深さ優先順に従うことを意味します
編集#2:上記の実装をよりダイヤモンドのように更新しました。