2

最初に見つかった継承された宣言を使用するだけで、ダイヤモンドの問題を解決できないでしょうか? つまり、

公開クラス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 つのものが存在する場合、最初の場所がデフォルトで使用されます (別の方法で修飾されていない限り)。BB::getInt()D::getInt()

編集:「最初の」継承された宣言により、単純な左から右の深さ優先順に従うことを意味します

編集#2:上記の実装をよりダイヤモンドのように更新しました。

4

2 に答える 2