問題タブ [derived-class]

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

java - その場でのクラス派生 - 訪問者パターン

そんな風にビジターパターンを作りたい

等々

それから私は工場を作りたいです

次の方法で呼び出すことができます

このアプローチでは、Visitor インターフェイスの accept() メソッドを実装するすべての Bean に対してコマンド抽象クラスを作成する必要はありません。

このソリューションは、クラス階層ごとのサービス ファクトリに応じて、特定のメソッドに共通の動作を持たせたい場合にも使用できます。

標準のjdkでそれを行う方法はありますか、それともcglibなどの外部ツールを使用する必要があるのでしょうか、それとも私が言っていることはゴミであり、他の方法でその目標を達成することができます.

高度な送信

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

python - 派生クラスで __coerce__() メソッドを呼び出すとエラーが発生する

私の試行は以下のようでしたが、うまくいきませんでした。

Pythonコマンドラインで次のように入力しました:

結果:

__coerce__()クラスを派生させずにメソッド を使用すると、 の結果は にx+y等しくなりradd called // 32ます。ただし、派生クラスではエラーが発生します。

助けてください。旧正月、よろしくお願いします。

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

c++ - 配列内の派生クラスへのアクセスの問題

私の問題は、すべてのゲームオブジェクトの配列を作成して、それらをすべてまとめることができるようにすることですが、myObjs [2]-> livesにアクセスしようとすると、アクセスできません。これは私が得るエラーです:

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

c++ - Base クラスの C++ 呼び出しテンプレート関数

以下に 2 つのケースを示します。

ケース 1) Base->BaseIndirect->DerivedIndirect

ケース 2) ベース -> 派生

ケース 2) では、3 つの表記法を使用して Base クラスのテンプレート関数を呼び出すことができます。ケース 1) では、これらの表記のうち 1 つだけを使用して Base クラスのテンプレート関数を呼び出すことができます。そして、表記法を使用して BaseIndirect のテンプレート関数を呼び出すことができません:(。これを修正するにはどうすればよいですか?ありがとう。

コンパイル時のエラー

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

c++ - 派生クラス配列を新しいものに割り当てる際の問題

簡単なプログラムがあります

newを使用して派生クラスオブジェクトを割り当てることは可能だと思いました。また、v-> check()は正常に機能しているようです。

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

c++ - boost::any に似たクラスの値へのアクセス

教育目的でシンプルboost::anyなクラスを作成していますが、保存された値にアクセスする方法がわかりません。値を完全に設定できますが、「ホルダー」クラスのメンバーにアクセスしようとすると、コンパイラーは、派生元のクラスにメンバーが見つからないと文句を言うだけです。virtualテンプレートのため、メンバーを宣言できません。

関連するコードは次のとおりです。

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

c++ - C++メンバー-関数チェーンの戻り型と派生クラス

この不自然な例を考えると:

アイデアは、「メンバー関数チェーン」を使用して、連続して複数のメンバー関数を呼び出すことができるようにすることです。(これには多くの例があります。上記は、この質問をするために私が考えることができる最短の例です。私の実際の問題は同様であり、以下に説明されています。)

問題は、派生クラスが独自の連鎖メンバー関数を追加するが、最初に基本クラスのメンバー関数を呼び出すと、派生クラスのメンバー関数を呼び出すためにはもちろん機能しない基本クラス参照を取得することです。

この問題を解決し、メンバーと関数の連鎖を実行する機能を維持するための賢い方法はありますか?


実際の問題

の実際の問題は、私の基本クラスが例外であり、私の派生クラスが基本例外から派生したクラスであるということです。これらのクラスについても、メンバー関数チェーンを使用したいと思います。

問題はそれset_something()が戻ることですbase_exceptionが、catch期待しderived_exceptionます。もちろん、人間は例外の実際のタイプがであると言うことができますderived_exceptionが、コンパイラは明らかにわかりません。

これが私が本当に解決しようとしている問題です。つまり、基本例外クラスが例外オブジェクトにオプションのパラメーターを設定できるようにする一方で、派生型のインスタンスを返す方法です。point_2d私が上で示した例は、人々が理解できる同じ問題のより小さくて単純なバージョンであり、より小さな問題の解決策も私の実際の問題を解決するだろうと私は信じています。

base_exceptionテンプレートを作成して、次のような派生型を渡すことを検討したことに注意してください。

more_derived_exception実際には問題は解決すると思いますが、別のクラスがから派生した場合derived_exception、同じ問題に戻るため、完全な解決策ではありません。

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

c++ - 派生クラスの配列から読み取るアクセス違反

(この質問に関連します。)

基本クラスBaseと 2 つの派生クラスがDer1ありDer2ます。(基本的な実装については、リンクされた質問を参照してください。それぞれにいくつかのパブリック プロパティもあります。) 私のプログラムでは、次のBaseような配列を作成します。

その後、次のようにDer1andのインスタンスで埋めます。Der2

にほぼ同一のコードが使用されDer2ます。

その後、配列を使用して、これらのクラスで定義された関数を呼び出します。

コードは正常にコンパイルされますが、実行しようとすると、「program.exe の 0x00232d60 で未​​処理の例外: 0xC000005: アクセス違反の読み取り場所 0x04064560」が発生します。

アクセスしようとしている配列内のオブジェクトを見ると、すべてのプロパティの値が本来の値ではなく 0.0000 になっています。2 つのdouble型配列もあり、最後のいくつかの要素が初期化されていないように見えます (「1.572398880752e-311#DEN」または「-9.2559631349317831e+061」など)。

私は .NET をあまりにも長く使用しており、ポインターについて知っていたことの多くを忘れてしまいました。これが問題の原因であると想定しています...このエラーを修正する方法について何か提案はありますか?

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

c# - 各派生クラスが静的プロパティの独自のコピーを持つ基本クラスを持つことはできますか?

私は以下のような状況にあります:

次のようなことを行うと、各派生クラスが独自のxの静的インスタンスを持つようにこれを設定しようとしています。

それから私が走るとき:

このようなことはできますか?これを実現するために派生クラスを設定するにはどうすればよいですか?みんなありがとう。

編集:基本的に、私はたくさんの派生クラスを持っており、それぞれがそのクラスに固有のプロパティを持っています。インスタンスごとに変化するわけではないので、静的変数である必要があると思います。また、そのプロパティはメソッドによって設定されます。これは、これらの各クラスで同じです。これらの派生クラスのそれぞれで、そのプロパティとメソッドのロジックをコピーして貼り付ける必要がないようにしています。どういうわけか、そのロジックを、これらの各クラスの派生元である基本クラスに移動するのが最善だと思いました。ただし、各派生クラスには、そのプロパティの独自のコピーが必要です。私は必ずしもこのようにする必要はありません、そしてあなたたちが何かを持っているなら、私はいくつかのより良い実践の提案を聞いてうれしいです..ありがとう!

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

php - 派生コンストラクターでスマートなディレクトリを設定することは可能ですか?

ねえ、私はこのようなことをしようとしています:

しかし、それはSmartyException("Unable to load template file"). 163行目から、表示を行う前smarty_internal_template.phpに の存在をチェックしているように見え$thisます。

私のシステムは正しくセットアップされているよう$smarty->set*Dir($smartyRoot.'foo');です。

何か案は?