問題タブ [static-polymorphism]

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 投票する
3 に答える
728 参照

c++ - CRTP を使用して静的ポリモーフィズムで純粋仮想関数をエミュレートすることは可能ですか?

CRTP を使用してコンパイル時のポリモーフィズムを実装しようとしていますが、派生クラスに強制的に関数を実装させたいと考えています。

現在の実装はこのようなものです。

この実装では、派生クラスが を実装していない場合、関数の呼び出しは無限ループに陥りますf()

派生クラスに強制的に純粋仮想関数のような関数を実装させるにはどうすればよいですか? 「static_assert」のように使用しようとしましstatic_assert(&base::f != &Derived::f, "...")たが、異なるクラスのメンバー関数を指す 2 つのメンバー関数ポインターが比較できないというエラー メッセージが生成されます。

0 投票する
2 に答える
591 参照

c++ - 静的ポリモーフィズム: インターフェイスを定義するには?

以下は、私が静的ポリモーフィズムとして理解している非常に単純な例です。PROCESSOR動的ポリモーフィズムを使用しない理由は、 inの関数のインライン展開を妨げたくないからですop

この例の問題点は次のとおりです。どの関数を定義する必要があるかについての明示的な定義が存在しませんPROCESSOR。どちらかが欠けていると、コンパイル エラーが発生します。これはスタイルが悪いと思います。

また、これには非常に実用的な欠点もあります。もちろん、IDE のオンライン アシスタンスでは、そのオブジェクトで使用できる機能を表示することはできません。

のパブリックインターフェースを定義するための良い/公式の方法は何PROCESSORですか?

0 投票する
1 に答える
96 参照

c++ - C ++でのポリモフィズムの正しいシナリオですか?

この数年後、私は奇妙な混乱に陥っています。ランタイム ポリモーフィズムの問題、仮想関数、およびそれらの多くについては知っていますが、以下のコード サンプルについては確信が持てませんでした。

上記のC++シナリオを考えると、私の質問は次のとおりです。

  1. このシナリオをポリモーフィズムと呼ぶことができますか?
  2. はいの場合、これを静的/コンパイル時のポリモーフィズムと呼ぶことができますか?
  3. いいえの場合、これは正しくない実装であり、仮想を使用する必要があると想定する必要がありますか?

前もって感謝します!

0 投票する
2 に答える
947 参照

java - Java: ポリモーフィを持つ未知のクラスから静的メソッドを呼び出す

、、、などのTokenいくつかのサブクラスを持つスーパークラスがあります。KnightKingQueen

ランダムなTokenタイプが必要なので、このメソッドを呼び出します。

次に、この tokenType で静的メソッドを呼び出したいと思います。次に例を示します。

コンパイラは、このメソッドが実装されていTokenても、そのすべてのサブクラスを解決できません。

私の間違いは何ですか?

0 投票する
1 に答える
215 参照

c++ - 文字列を使用してテンプレート クラスの特殊化を選択する

ポリシーを使用して作成されたいくつかのタイプがあります。

ここで、コマンド ラインなどからの入力に基づいて、どの SpecializedType を使用するかをエレガントに選択できるメカニズムをいくつか紹介したいと思います。理想的には、次のような適切なタイプのオブジェクトを作成するファクトリ メソッドになります。

アドバイスをいただければ幸いです。ありがとう!

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

c++ - 静的ポリモーフィズム階層による静的ビジターの結合

私のプログラムの目的は、クラス階層で静的ポリモーフィズムを使用しながら、一連の静的ビジターでアクセスできるデータのリストを作成することです。

CRTP を介して静的ポリモーフィズムを利用するクラスの階層を作成しました。

DerivedBaseData を格納して、後で反復してアクセスできるようにしたいと考えています。

静的ビジターを静的ポリモーフィズム階層と結合する方法を探しています。コンテナーでクラスを使用するために、テンプレート クラスではない静的ポリモーフィズムで VirtualBaseData クラスが必要です。ただし、VirtualBaseData クラスをテンプレート クラスにすることができないため、CRTPattern で行ったように、適切な static_cast を派生クラスに作成することができません。

私の質問は、私の静的ポリモーフィズム設定と静的ビジター パターンを保持する優れた戦略を持っている人はいますか?

参考までに: http://hillside.net/plop/2006/Papers/Library/portableProgrammingPL.pdfの 21 ~ 23 ページで説明されているように、静的ビジターを実装しました。

0 投票する
1 に答える
61 参照

templates - 次のようなテンプレート化されたクラスを設計するには?

この質問はインタビューで私に尋ねられました。私はまだこの質問の解決策を探しています。

次の 2 種類の関数 (両方または 1 つ) は、具象クラス内に存在できます。

  1. /li>
  2. /li>

私たちの目標は、PrettyPrint両方の種類の実装をサポートするテンプレート クラスを設計することです。

PrettyPrint私が書いた優先順位で具象クラスの関数を使用します。両方が存在する場合、最初のものが使用され、そうでない場合は2番目が使用されます。