問題タブ [multiple-inheritance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
1807 参照

c++ - 複数の継承されたテンプレート化された関数を特殊なバージョンでオーバーライドする

では、最初にサンプル コードを示します。これは、コンパイルされませんが、私がやろうとしていることを伝えようとする私の試みです:

だから、私がやろうとしているのは、派生クラスをさまざまなコールバックリストに自動的に接続する一種のラッパークラスを継承することです。派生クラスの特定のインスタンスをリストに接続する必要があります。ご覧のとおり、派生クラスの作成の一環として、「ユーザー」がコールバック関数を作成する必要があります。

別の構文を使用する必要があるかもしれませんが、これは機能するはずです。うまくいかない場合、何か提案はありますか?

0 投票する
9 に答える
33483 参照

c# - 多重継承に関連するインターフェースの実際の使用例

プログラムに実装できるようにインターフェイスを理解しようとしていますが、どのように使用すればよいか想像できません。また、C#で多重継承でそれらを使用する例を教えてください

0 投票する
4 に答える
2524 参照

c++ - 異なるテンプレート タイプでの複数の継承

私はC++でイベント処理に取り組んでおり、イベントの通知を処理するために、イベントを生成するクラスが継承できるクラスEventGeneratorがあります。EventGenerator には、他のクラスがコールバックに追加するために使用できるメソッドと、イベントが発生したときにコールバックを呼び出すメソッドがあります。

さまざまなタイプのイベントの通知を処理するために、テンプレート タイプ T で EventGenerator をパラメーター化しました。通知クラスは、さまざまなタイプでパラメーター化された EventGenerator から複数回継承できます。

完全を期すために、EventGenerator のコードを次に示します。



そして、コールバックを追加したいクラスが継承する EventListener のコードは次のとおりです-



これはあまり良いデザインではないと感じており、そのような問題に対してより良いデザインがあるかどうか疑問に思っていました.

編集:気になるのは、多重継承を使用しているという事実です。頻繁に使用しないように警告されてきたので、そのような設計が将来悪いことが起こる可能性があるかどうかについての意見が欲しかったのでしょう。

ありがとう

0 投票する
5 に答える
1915 参照

c# - インターフェイス C# を使用した多重継承

2 つのクラスの選択機能を 3 番目のクラスに使用しようとしています。たとえば、派手なボタンの境界線を作成する Button1 クラスと、テキストをカラフルな形式で書き込む Button2 クラスがあります。現在、これらのクラスは、コードにアクセスできないサードパーティ ベンダーから提供されています。クラスは封印されていないため、継承でき、両方とも基本ボタンクラスから派生しています。

ここで私の要件は、派手な境界線とカラフルなテキストの両方を作成する機能を持つ Button3 クラスという名前の 3 番目のクラスを作成することです。理想的には、両方のクラスから継承し、特定の関数を使用していたでしょう。C# では多重継承がないため、これは不可能です。

この場合、インターフェースが結果を達成するのに役立つことを読んでいました。1 つのクラスで 2 つのクラスの特定の機能を使用する方法を誰かに教えてもらいたいと思います。

0 投票する
3 に答える
1026 参照

c++ - 同じ名前の演算子からのC++多重継承

2つの異なる抽象クラスから、戻り型のみが異なる同じ名前の演算子を継承することは可能ですか。もしそうなら、彼ら:

  • 演算子を実装するための構文は何ですか

  • 演算子を使用/解決するための構文は何ですか

  • 他の仮想関数の場合と同じように、一般的な場合のオーバーヘッドはどのくらいですか?

役立つリファレンスまたはサンプルコードを提供していただければ

ありがとう

ブロック行列は、両方の演算子の実装を提供する必要があるため、コンテキストに応じて、行列またはブロック行列のいずれかになります。block_matrixクラスに固有の実装を提供する方法がわかりません。今のところ、これは最後の引数としてオブジェクトラップ型を渡すことによって行われますが、それはあまりきれいではないようです。純粋な行列表記を保持したいと思います。

0 投票する
8 に答える
8612 参照

c++ - C++ を使用して、同じ基本クラスから 2 回正しく継承するにはどうすればよいですか?

これが理想的な継承階層です。

これは、継承階層がFoobar2 回から継承しようとするためであり、そのため、コンパイラは のメンバーに対するあいまいな参照について不平を言うからですFoobar

どうしてこんなに複雑なモデルが必要なのか説明させてください。これは、 、 、 、および から同じ変数にアクセスできるようにWindowsFoobarするUnixFoobarためFoobarClientですFoobarServer。これは問題にはなりませんが、任意のプラットフォームでサーバー/クライアント関数を使用し、クライアントまたはサーバーでプラットフォーム関数を使用できるように、上記の任意の組み合わせで多重継承を使用したいだけです。

これは多重継承のやや一般的な問題だと感じずにはいられません...私はこの問題に完全に間違った角度から取り組んでいますか?

更新 1:

また、#ifdefこれを回避するために使用できることを考慮してください。ただし、これは次のような非常に醜いコードを生成する傾向があります。

...うん!

更新 2:

この問題の背景をもっと読みたい人は、該当するメーリング リストのスレッドに目を通すことを強くお勧めします。3回目の投稿あたりから面白くなり始めます。また、問題の実際のコードをここで確認できる関連コード コミットもあります。

0 投票する
5 に答える
1833 参照

c++ - クロスコンパイルには`#ifdef`または継承を使用する方が良いですか?

仮想継承と多重継承に関する以前の質問(クロスプラットフォームシナリオ)に続くために-いくつかの回答を読んだ後、サーバークラスとクライアントクラスを保持し、プラットフォーム固有のクラスを次のように置き換えることでモデルを単純化できることに気付きました#ifdefs(これは私が最初にやろうとしていたことです)。

このコードを使用する方が簡単ですか?少なくともファイルが少なくなることを意味します!欠点は、いたるところにFoobarあるため、クラスがやや「醜く」、少し読みづらくなることです。#ifdefsUnix Foobarのソースコードがコンパイラに渡されることはないため、これはと同じ効果があることに注意してください(呼び出すプラットフォーム固有のクラスを決定するために#ifdefも使用するため)。#ifdef

注:簡単な例として、いくつかのもの(ctorなど)は省略されています。

アップデート:

この問題の背景をもっと読みたい人のために、私は本当に適切なメーリングリストのスレッドをざっと読むことをお勧めします。3番目の投稿のあたりで物事が面白くなり始めます。また、関連するコードコミットがあり、ここで問題の実際のコードを確認できます。

0 投票する
5 に答える
34737 参照

c++ - メソッド名を共有するインターフェースを継承する

同じ関数名を持つ2つの基本クラスがあります。私はそれらの両方を継承し、それぞれの方法を異なる方法で乗り越えたいと思っています。(クラス定義で定義する代わりに)別々の宣言と定義でそれを行うにはどうすればよいですか?

VC8で定義を移動できませんでした。私は、Microsoft固有のキーワード__interfaceがこの仕事をうまく行うことができることを発見しました、以下のコード:

しかし、他のコンパイラで機能する、より一般的なこれを行う別の方法はありますか?

0 投票する
3 に答える
487 参照

python - Python多重継承:動的に行うのは何が悪いのですか?

この回答に基づいて、Pythonでどのよう__new__に動作することになっているのか、__init__

新しいクラスとオブジェクトを動的に定義して作成するために、このコードを書きました。

基本的に、__new__A の は A と B を継承する動的に作成された C を返すため、属性が必要ですbar

なぜ属性がC ないのですか?bar

0 投票する
4 に答える
47198 参照

java - Javaで複数の基本クラスから継承するには?

重複の可能性:
Java での単一継承のチート !!
JavaまたはC#で多重継承が許可されないのはなぜですか?
Javaでの多重継承.

インターフェイスを使用して複数のクラスから継承できることは知っていますが、状態も継承できますか?
2 つのクラスから定義されたメソッドを継承し、それらを Java の 3 番目のクラスに含めるにはどうすればよいですか?