問題タブ [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 投票する
2 に答える
3030 参照

c++ - C++ Boost シリアライゼーション テンプレート化された派生クラスのシリアライズ

ジェネリック クラスのポインターのリストとして属性を持つクラスをシリアル化したい

これは、ジェネリック クラスの派生元の親クラスです。

ジェネリック クラス:

シリアライズしたいクラス

したがって、ブーストシリアライゼーションドキュメント(http://www.boost.org/doc/libs/1_43_0/libs/serialization/doc/serialization.html#derivedpointers)を読んだ後、シリアライゼーションコードでこれを試しました:

メッセージを頂きました、

エラー: 'template' (曖昧さ回避ツールとして) はテンプレート内でのみ許可されます

、だから私は交換した

oa.template register_type >();

oa.register_type();

それは機能し、テキストとバイナリで保存できました(データを確認しました)

今ロードするために、私はこれらの行を使用しました:

それは私にエラーを投げました:

エラー: 'GenericBase::GenericBase()' の呼び出しに一致する関数がありません

このサンプルhttp://www.boost.org/doc/libs/1_43_0/libs/serialization/doc/serialization.html#constructorsのように、保存と読み込みの2つのメソッドをオーバーライドする必要があると誰かが私に言いました

しかし、どこでそれらを定義する必要がありますか? Useクラスの宣言では?メンバーとどう付き合うか

?

ご協力いただきありがとうございます ;)

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

c# - 基本クラス オブジェクトの問題から派生クラスにアクセスする

私は一種の奇妙な状況を持っています...

私は WPF 魔女にユーザー コントロールを持っており、それに他のユーザー コントロールがいくつかアタッチされています。次に、ユーザー コントロールの UI 要素とメソッドにアクセスする必要がある大きなアルゴリズムを含む巨大な C# コード ファイルがあります。このホール プロセスはタイマーで動作します。ユーザーコントロールからC#コードファイルアルゴリズムにデータを送信し、コントロールからUI要素を返して更新し、そのメソッドにアクセスする必要があります...

ここで重要なことは、この巨大なアルゴリズムをコントロールのコード ビハインド ファイルに配置したくないということです。代わりに、コントロールの UI 要素とそのコード ファイルから宣言されたメソッドにアクセスしたいと考えています。

これまでに試したことは、使用しているユーザー コントロールからコード ファイルのクラスを実際に派生させることです。これはうまく動作しますが、派生クラスにアクセスするには、その新しいオブジェクトを作成する必要があり、表示される UI が取得されません。私が信じている新しい基本クラスオブジェクトも作成するため、更新されました...

だから私は次のようなものを持っています:

したがって、私の質問は次のとおりです。新しいオブジェクトをインスタンス化せずに派生クラスを呼び出すにはどうすればよいですか。これにより、新しいユーザー コントロール オブジェクトが作成され、表示される UI が更新されないためです...または派生しない場合Algorithm クラス、ユーザー コントロールの要素とメソッドにアクセスするにはどのような可能性がありますか?

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

c# - C# 派生クラス、オーバーロードの解決

わかりました、基本クラスから派生したいくつかの異なるオブジェクトがあり、それらの束をリストに入れました。リストをループして、それぞれをメソッドにプッシュしたい。それぞれの型シグネチャを持つ個別のメソッドがありますが、コンパイラは不平を言っています。誰かが理由を説明できますか?これは Generics を使用する機会ですか? もしそうなら、どのように?

...

...

...

私は何を間違っていますか?

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

c# - 戻り値としての派生クラス

これらの C# クラス (WCF によって生成されるため、これらを変更することはできません):

私のコード(現在):

私の質問:型を明示的にチェックする必要はないという明らかな何かが欠けていると感じ続けています。私は先輩の瞬間を持っていますか?

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

python - 基本クラスを派生クラスpython(またはクラスを拡張するよりpythonicな方法)にキャストします

Networkx pythonパッケージを拡張しGraph、特定のニーズに合わせてクラスにいくつかのメソッドを追加する必要があります

これを行うことについて私が考えた方法は、単に新しいクラスsayNewGraphを派生させ、必要なメソッドを追加することです。

Graphただし、networkxには、オブジェクトを作成して返す(たとえば、ランダムグラフを生成する)他の関数がいくつかあります。新しいメソッドを使用できるように、これらのGraphオブジェクトをオブジェクトに変換する必要があります。NewGraph

これを行うための最良の方法は何ですか?それとも、まったく別の方法で問題に取り組む必要がありますか?

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

c++ - 自己参照する派生クラスを処理するC ++

したがって、C ++でこのようなツリークラスがあるとします

これで、specialTree の子にアクセスするたびに、明らかに、specialNode* ではなく Node* が取得されます。

しかし、この specialNode* には、Node にはないメンバー変数と関数があります。

specialNode が子としてのみ specialNode を取得し、それ以外の場合はコンパイル時に中断するように強制することはできますが、子/親にアクセスするときに Node* を取得し、specialNode 関数であっても、特別な関数を使用するときはいつでもそれをキャストする必要があります。

これを行うための賢い方法、またはより良い方法はありますか? 文字通り毎回キャストする以外に?

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

c++ - 宣言の使用 (派生クラス)

B1::fb()としてB1::fb(B1*) and B2::fb()扱われているからB2::fb(B2*)でしょうか。つまり、暗黙のパラメーターはこれらを区別するのに役立ちますか?

$13.3.1/4-

using 宣言によって派生クラスに導入された非変換関数の場合、暗黙的なオブジェクト パラメーターの型を定義する目的で、関数は派生クラスのメンバーと見なされます。

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

c++ - 継承に関する典型的な問題

重複の可能性:
C++ でこれが許可されないのはなぜですか?

これが C++ で許可されないのはなぜですか??

エラーが発生します

私の質問は、 func() が派生クラスでパブリックに定義されているため、ステートメント ((派生 *)ptr)->func(); 派生の func() を表示しようとしています..継承のモードが原因でアクセス可能な問題があるのはなぜですか..継承のモード (プライベート) は呼び出しにどのように影響しますか. ?

継承モードがパブリックに変更された場合、望ましい結果が得られます..しかし、 func() がベースでプライベートであり(ベースの func() が継承されないため)、また func() が派生およびモードでパブリックである場合継承は公開されているのに、なぜまだ目的の結果が得られるのですか?.前のケースのようにコンパイル エラーが発生するはずですか??

私は完全に混乱しています..この場合、コンパイラがどのように機能するか教えてください..??

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

python - 派生した Python オブジェクトのディープ コピー

QtGui.QGraphicsPixmapItemいくつかの基本的な属性とメソッドから派生した Python のオブジェクトがあります。deepcopyこのオブジェクトへの参照を呼び出した後underlying C/C++ object has been deleted、コピーを使用しようとするとエラーが発生します。以前にこのエラーを受け取ったことがありますが、基本クラスのコンストラクターを呼び出さなかったときに発生したため、このエラーはがコピーされていないこと__init__が原因であると想定しています。QtGui.QGraphicsPixmapItem

これを指定するにはどうすればよいですか?私が知っているのは、__deepcopy__この目的のための方法があるということだけです。

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

c++ - 非仮想派生: コンパイラから実際に得られるものは何ですか?

非仮想派生を使用する場合、コンパイラによって何が生成されるのか疑問に思っています。

ここでの派生は、コンパイル時のチェックのみを意味しますか? それとも他のオーバーヘッドがありますか?

Point2or を直接使用すると、コンパイラが同じサイズのオブジェクトを生成することに気付きましたPoint<2>。派生によって vtable が発生しなかったと推測されるため、仮想呼び出しは行われません。

何か不足していますか?


環境

特定のクラス テンプレートの定義済みの特殊化をいくつか提供したいと考えています。私はtypedefから始めました:

残念ながら、これにより、クライアントは「単純な」前方宣言を使用できなくなります。

次に、このかなり直感的でないコードを記述することが必須になります。

これが、typedef を破棄し、非仮想派生を使用した理由です。それでも、私はすべての意味が何であるか疑問に思っています。

(別の戦略は、前方宣言を専用のヘッダー ファイルに 1 回記述することです#include <iosfwd>。)