問題タブ [derived]

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 に答える
739 参照

c++ - 派生オブジェクトをマップ内に格納する C++

そうです、私は c++ にかなり慣れていないので、まだここで学んでいます。これについて間違った方法で行っている場合は教えてください。ただし、可能であれば正しい方向に向けるようにしてください (チュートリアルへのリンクを含む HPAPS など)。

私は std::map をいじっていて、それを使ってオブジェクト (アイテム) を保存しました。これはうまくいきます。問題は、派生アイテムをマップ内に格納しようとすることです。私はそれを機能させましたが、派生オブジェクトをスライスしているようです。

たとえば、item に属性 a、b、c があるとします。food は、追加の属性 d および e を持つ item から派生します。アイテムのマップに格納されている場合、d と e にアクセスできません。コンパイラは次のように述べています。

「エラー: 'class item' には 'd' という名前のメンバーがありません」

std::map を多態的に使用することは可能ですか、それともブーストのような別のライブラリを使用する必要がありますか? ブーストはかなり複雑に思えます。私がまだ学習している間にマップでそれを行う方法があることを望んでいました。これは、私が何を意味するのかを明確にするために、私が遊んでいるコードの一部です。

アイテムのマップは次のように宣言されます。

次のように追加されます。

これは機能しますが、派生アイテムの d と e にアクセスできません。

助けてくれてありがとう

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

c++ - 派生クラスがC++でさまざまなデータ型を運ぶための最良の方法

後で取得する必要があるさまざまなデータ型メンバーを運ぶ派生クラス型を受け入れるC++のインターフェイスを提供する最も洗練された方法は何ですか。以下の例は、ContainerクラスがBaseItemの派生バリアントの一種であるItemを「投稿」するメソッドを提供する場合にこれを示しています。後で、派生アイテムを取り戻し、その値を抽出したいと思います。

私が望んでいる主なことは、Containerインターフェース(postとreceive)が将来同じままでありながら、さまざまな「Item」派生型を定義して「渡す」ことを可能にすることです。どういうわけか、これにはテンプレートの方が適しているでしょうか。RTTIは使いたくないです。これには単純でエレガントな答えがあるかもしれませんが、今はそれについて考えるのに苦労しています。

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

c++ - 基本クラスの派生クラスで使用される関数を配置しますか?

上記の例のように、派生クラスで使用される可能性のあるすべての関数を基本クラスに配置することで、設計上の問題や予期しない結果が発生する可能性はありますか?

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

c++ - C ++:Tから派生したテンプレートクラスを作成できますか?

これを英語でどのように表現するかは正確にはわかりませんが、次のようなことをしたいと思います。

基本的に、テンプレートクラスがありますが、テンプレートで指定されているクラスから新しいクラスを派生させていますか?つまり、コンパイル時にクラスを必ずしも知っているとは限りません。

これも可能ですか?
もしそうなら、これのセマンティクスは何ですか?

たとえば、「親」クラスを作成しようとしているとします。この例では、それが木の親であるとしましょう。ツリーの親は、ツリー自体です(したがって、ツリーから継承します)が、子ツリーへの参照のベクトルもあります。
ただし、親クラス自体はツリーである必要はありません。次のようなものを書くことができるように、それはどのクラスでもかまいません。

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

c++ - 別の派生クラスから派生クラスのメンバーにアクセスする方法は?

親クラスがあり、その親クラスから 2 つの公に派生したクラスがあります。例えば。

質問: ある派生クラスのプライベート メンバーに別の派生クラスからアクセスしたいと考えています。どうすればいいですか?

私が今持っている方法は次のとおりです: cDerived1 オブジェクトをパラメーターとして cDerived2 の ctor に渡します。このようにすると、cDerived2 を cDerived1 のフレンドとして宣言し、cDerived2.h 内に cDerived1.h を含める必要があります。

これは正しい方法ですか、それとも私は非常に露骨に間違ったことをしていますか??

ありがとう。

Paul のコメントに応えて: 以下に示すように、親クラスに共有コードが既にあります。

0 投票する
0 に答える
979 参照

asp.net-mvc - JSON / JSON.NET を使用した MVC4 デシリアライゼーション - リスト内部の派生型

JSON経由でMVC4コントローラーとの基本的な通信を試みています。両方のポイントでデータを送受信する必要があります。クライアントの場合、RestSharp を使用しています。

私の問題は、サーバーに送信されるときに、TheObjectIWantToTransfer のリストに値がないことです。そのため、コントローラー側でも Json.NET をいじり始めました。

これらはクラスの例で、転送したいものがどのように見えるかです。

私も使ってみました

JsonConvert シリアライズ/デシリアライズを使用。出力は変更されましたが、まだ機能していません。彼は参照された型を見つけることができませんでした。コントローラーで TypeNameHandling.All Json.NET オブジェクトを受け取る方法がわかりません。TypeNameHandling.All でシリアル化してクライアントにデータを送信できる JsonNetResult を作成しました。しかし、Json.NETで受信/逆シリアル化できませんか?

解決策が必要です。可能であれば、MVC の通常の Json() メソッドを維持できれば幸いです。

配列内の派生型で機能しないとは信じられません。これを有効にするには、何らかの属性またはハックが必要です。

または、私は本当に本当に間違ったことをしています..

どうも !

0 投票する
0 に答える
338 参照

xcode - Xcode4派生/ビルド/中間製品のデータパス:ユーザー設定で実際に定義する必要がありますか?

たくさんのリソースがこれらのフォルダを設定する方法を教えてくれますが、私はまだインフラストラクチャに満足していません。私が必要なのはこれです:

  • デフォルトのフォルダを使用したくない(デフォルトのプロジェクトまたはワークスペース設定で、クリーンなXcode 4インストールでプリセットされている)。

  • それらをプロジェクト(またはワークスペース)を基準にしたディレクトリに配置したい

したがって、プロジェクト設定に必要な変更を加えました。ファイルは期待どおりに配置されていますが、プロジェクトとワークスペース設定は、Xcodeにシェルがある場所にeproductを配置するように指示し、xcuserdata / $ USER.xcuserdatad /Workspace{またはProjectに保存されます。 }。設定。

どの(.settings)がSCMで追跡することは当然受け入れられません。

その結果、他のユーザーが別のチェックアウトを行った場合、彼はプロジェクト(またはワークスペース)を開き、最終的にビルド製品がワークスペース{またはプロジェクト}で指定されたパスではなく、デフォルトのパス(ユーザーのホームフォルダー)に配置されます。設定XMLファイル-xcuserdata/フォルダーは追跡されず、ユーザーのログインはもちろん異なります。

私は、contents.xcworspace XMLの兄弟であるXMLファイルを期待しますが、ユーザー設定でオーバーライドする可能性があります。明らかに、これは利用できません、少なくとも文書化されていませんね?

それで、私のニーズに合う別の可能性はありますか?

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

c++ - 派生オブジェクトのシリアル化をブーストしても、派生オブジェクトの serialize() が呼び出されない

同様の質問をたくさん読みましたが、答えが見つかりませんでした。Visual Studio 2010 とブースト 1.47 を使用しています。

コードは次のとおりです。完全でコンパイル可能です。

本当に単純であることがわかります。仮想メソッドではなくても、DerivdObject::serialize() が確実に呼び出されるようにする BOOST_CLASS_EXPORT および oa.register_type マジックを追加しました。 BaseObject が呼び出されます。おそらくVisual C++に固有の問題ですか?ご意見をお聞かせください?

0 投票する
0 に答える
64 参照

.net - 別のアセンブリで派生したクラスのインスタンスを作成する

この号のタイトルを考えるのに苦労しました。これが、この問題を説明するための最善の方法です。

ここでは一般的なクラス名を使用しましたが、ポイントは同じです。

Common.dll という名前の DLL には、FormControl という名前のクラスがあります。ボタンバーと多数のフォーム要素が表示されます。次に、MButtonBar というクラスを作成します。このクラスには、表示する MButton オブジェクトのコレクションが含まれています。

FormControl を使用する 2 つの個別のアプリケーションがあります。これらは関連するアプリケーションです。ただし、アプリケーションの 1 つで、XButton と呼ばれるボタンのインスタンスを作成する必要があり、XButton は MButton から派生しています。

問題は、FormControl がボタン バーを作成し、ボタン バーがボタンを作成することです。これらはすべて Common.dll 内にあり、XButton を認識していません。

Common.dll のボタン バーで XButton のインスタンスを作成する方法はありますか? Activator.CreateInstance またはファクトリを使用する任意の方法。インスタンス化するクラス名を渡すエレガントなメカニズム。

別の解決策は、新しい FormControl を派生させ、ボタン バーの作成メソッドをオーバーライドすることです。次に、新しいボタン バーを派生させ、派生した FormControl からこのタイプのボタン バーを作成します。次に、派生ボタン バーで create button メソッドをオーバーライドして XButton を作成できますが、これは大変な作業のように思えます。

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

c# - 一般的なメッセージレシーバーで異なるクラスタイプに対して異なるメソッドを呼び出すにはどうすればよいですか?

IMessage という基本クラスと、多数の派生メッセージ クラスがあるとします。

私のプログラムには、すべてのメッセージを受け取るメソッドが 1 つあります。

メッセージの種類ごとに特定のメソッドを呼び出したいと思います。私ができれば素晴らしいことです:

..しかし、明らかに「私たちはそのように外出していません」。

では、単一の messagehandler から呼び出されて、特定のメッセージに対して特定のハンドラーを実装するにはどうすればよいでしょうか?