問題タブ [base-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.
c# - C# - リストを「キャスト」する簡単な方法リストへ?
Article
、BlogPost
、およびの 3 つの主要なタイプの「オンライン ニュース出版物」を含むサイトを構築していますColumnPost
。サイト全体に、これらのリストを出力するさまざまなコントロールがあり、一緒に混合したり、混合したりしません。したがって、多くのコントロールには記事のリストがあり、他のコントロールにはブログ投稿とコラム投稿のリストがあります。いくつかの場所では、記事、ブログ投稿、およびコラム投稿のリストさえ持っています。そこで、 という 3 つすべてのラッパー クラスを作成しましたPublication
。私の以前のクラスは次のように継承されました:
私の新しいPublication
ラッパーでは、次のようになります。
今、私はこのようなことができます:
さらに、C# のメディエーター パターンを使用して、重複するデータを必要とする可能性のある多くの競合するコントロールを仲介しています。以前は を持ってArticleMediator
いましたが、代わりに に変更しましたPublicationMediator
。
私の質問:
基本クラスのリストから派生クラスのリストを取得する最良/最も簡単な方法は何ですか? したがって、私のメディエーターは基本的に a を受け取り、 aList<Publication>
を返しますList<Publication>
。リスト内のすべてが であることがわかっている場合、Article
それを元に戻して としてキャストする簡単な方法は何List<Article>
ですか? 現在、私は多くのコードのように見える次のことを行っていますが、これが私がすべき方法であれば、私は大丈夫です。もっと簡単な方法があるかどうか疑問に思っています:
PublicationList
プロパティは、List<Publication>
メディエータが現在のコントロールの使用を許可することを決定したことを返します。ただし、必要なのは だけであることはわかっているので、リスト内のList<Article>
それぞれを調べて、それが であることを確認してから、それを実際の に追加する必要があります。これを行う簡単な方法はありますか?Publication
Article
List<Article>
メディエーターが a を返すように変更したくない理由はList<Article>
、場所によっては両方が必要なためBlogPost
、実際にはリピーターを aにColumnPost
バインドする必要があり、現在のアイテムがまたはであるかどうかを確認できるからです。List<Publication>
ItemDataBound
BlogPost
ColumnPost
アップデート
私は受け入れられた答えを取り、それを拡張機能にしました:
c++ - 奇妙なエラー c2660 「関数は引数を 1 つ取りません」
私の基本クラスにはこの機能があります
派生クラスがこの関数を呼び出すとき
エラー C2660 が表示されます:「関数は引数を 1 つ取りません」。
何故ですか ?
c# - 基本クラスの実装に関する考慮事項
私は何かをするためのクラスを作成しましたが、しばらくすると、他の多くのクラスが機能を共有していることがわかったので、基本クラス(C#で抽象化)を実装し、すべてを共有することにしました。
そのようなクラスをインスタンス化することはできないので、それをデバッグする方法は?
基本クラスを開発するための実際的な考慮事項はありますか?
c++ - C++: 親メソッドと変数へのアクセス
この親メソッドと親変数にどのようにアクセスすればよいですか?
ありがとう。
編集:あいまいさがある場合はどうなりますか?
c++ - C++: 保護されたクラス コンストラクター
クラスが常に継承される場合、コンストラクターを作成する意味はありprotected
ますか?
ありがとう。
c++ - C++ での基本クラス -> 派生クラスおよびその逆の変換
次のコード例があります。
コンパイルできません。G++ は次のようなエラーをスローします。
エラーが C++ の専門家にとって明らかであることはわかっていますが、基本クラス オブジェクトから派生オブジェクトへの変換を実行できない理由がわかりません。誰かが私が抱えている問題の解決策を教えてもらえますか? アドバイスでthx
c++ - 基本クラスで以前に定義された派生クラスでメソッドをオーバーロードして呼び出す方法は?
これは基本クラスです:
そして、これは派生クラスです:
指定されたエラーは次のとおりです。
29 行目: IntelliSense: "std::pair" から "long double" への適切な変換関数が存在しません
行 29: IntelliSense: 関数呼び出しの引数が少なすぎます
どうやら問題は、パブリックに定義されているにもかかわらず、派生クラスから基底クラスのメソッドにアクセスできないことです。
このコードを機能させるにはどうすればよいですか?
(私の IDE は Visual Studio 2010 です。)
c++ - 基本クラスを派生クラスの混乱にキャストするc++
と呼ばれる基本クラスと、などbase
と呼ばれる派生クラスを作成する場合、基本クラスのインスタンスのコレクションを使用します。要素を取得して使用しようとすると、C++はそのタイプがベースクラスの、おそらくベースのから取得したためです。これは、このオブジェクトがベクターに入れられたときにこのオブジェクトが存在することを知っていた、特定の派生クラスにのみ存在する機能を使用したい場合の問題です。derived_1
derived_2
std::vector
そこで、要素を想定されているタイプにキャストしましたが、これは機能しないことがわかりました。
そして、それはポインタのことであることを思い出しました。いくつかの調整の後、これは今うまくいきました。
これは正しいですか、それとも、たとえば、abc_cast()
より少ない混乱でそれを行う機能がありますか?
編集:
私はこれを別の質問に拡張する必要がありました。完全な解決策がそこに示されています。stackoverflow.com...なぜポリモーフィックタイプのエラーとクリーンアップの質問
design-patterns - インターフェイス+ベースクラス-これはどのようなパターンですか?
基本クラスによって実装されるインターフェースを定義しました。この基本クラスは、基本的な機能を提供します。これで、基本クラスを実装し、これらの機能をより具体的に拡張する複数の実装ができました。これらの複数の実装を呼び出すときは、実装をインターフェイス(基本クラスに実装されている)にキャストします。
このタイプのインターフェースの使用法が説明されているパターンはありますか?それとも、この種のアーキテクチャは逆効果ですか?
ご挨拶
c# - 継承の問題。基本クラスの複数のインスタンスを作成する方法は?
私は基本クラス(PrintProviderBase
)を持っています。いくつかの状態 ( PrinterUnavailable
、NoPaper
、 ...) を保持します。
次に、このクラスから継承します: ColorPrintProvider
, BlackAndWhitePrintProvider
...
基本クラスに次のようなプロパティがあると仮定しました。
次に、各子クラス (異なる印刷プロバイダー) には独自の状態があります (静的なものはありません)。共通の機能と状態を にカプセル化できるように、各子クラスにのコピーを用意するつもりでしたが、クラスの 1 つのインスタンスがbase
それらの間で共有されているようです。base class
base class
現在、印刷プロバイダーがNoPaper
状態になると、他のプロバイダーは不適切な状態のために印刷を停止します。この動作を変更するにはどうすればよいですか?