問題タブ [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.

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

c# - 基本クラスでのインスタンス化のトレース

現在、私はこの方法で基本クラスのインスタンス数を追跡しています:

次に、次のようなコンストラクターを持つ子クラスがあります。

もちろん例外もあります。コードをBaseClassコンストラクターからコンストラクターに移動できますChildClassが、これは一種の冗長性です (すべての子が同じコードを持つ)。

でそれを行う方法はありますBaseClassか?

ChildClass上記のコードに従って、本当に複数のインスタンスを作成しようとしたことを意味しますか?

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

c# - クラス間で C# のメソッド命名の一貫性を強制する

プロジェクトに一連のクラスがあり、それらはすべて基本的に同じことを行いますが、オブジェクトは異なります。それらのいくつかは別の時期に別の人によってコード化されているため、名前付けに一貫性がありません。現在のオブジェクトだけでなく、将来作成される新しいオブジェクトにも一定の一貫性が保たれるように、コードを更新したいと考えています。プログラミングを理解していると、基本クラスまたはインターフェイスのいずれかが必要であると考えるようになりますが、どちらも機能させる方法がわかりません。私がしたい方法は次のとおりです。

私が抱えている問題は、各クラスで「BusinessObject」と「EntityObject」が異なることです。たとえば、「CarObject と CarEntity」の場合と「BusObject と BusEntity」の場合があります。私はまだ 2 つのメソッドが必要であり、MethodA と MethodB という名前が必要です。実装内の実際のオブジェクト タイプを交換したいだけです。異なるオブジェクトを使用しているため、実装自体も異なります。

コンパイル時にオブジェクトの型を知っており、オブジェクトのプロパティにアクセスできる必要があるため、ジェネリックを使用する場合は、実装でジェネリックを正しい型としてキャストする必要があります。また、MethodA の実装では、「新しい」BusinessObject、つまり「BusinessObject x = new BusinessObject()」を作成する必要があります。

メソッドでジェネリックを使用したインターフェイスと、抽象メソッドを使用した基本クラスを使用してみましたが、どちらも機能させる方法を理解できませんでした。

これを処理する最善の方法は何ですか? サンプルコードは大歓迎です。

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

python - 基本抽象クラス Django のサブクラスからフィールドを削除します

コメント システムが必要なアプリケーションを作成しています。Django のコメント アプリを使用することにしましたが、少し変更する必要がありました。まず、ユーザーの電子メール ID を必須にしたくありません。次に、コメント付きのファイルを添付するオプションが必要です。

したがって、BaseCommentAbstractModel からサブクラス化することにしました。ここで、user_email をオーバーライドする必要があります。

別のフィールドを追加します

私のコードは次のようになります。

しかし、これは機能しません。user_email は引き続き必須です。何か案は?

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

c++ - テンプレート基本クラスの C++ STL コンテナー

テンプレート化された基本クラスから派生したオブジェクトを STL マップに格納しようとしています。ただし、派生 (または実際にはベース) オブジェクトを挿入しようとすると、以下が返されます。

派生クラスの使用は、STL コンテナーを異種混合にする方法の 1 つとして認められていることを理解しています (http://www.parashift.com/c++-faq-lite/containers.html#faq-34.4)。このコンテキストでテンプレートを使用できるかどうかを知りたいです。テンプレート化されていない派生クラスで重複した宣言を行う代わりに、コンパイル時にさまざまな型に対してインスタンス化される、基本クラスでコンテナーの範囲の宣言を 1 つ持つことができるので、非常に便利です。

私のコードは次のとおりです。

派生クラス ポインターで dynamic_cast を実行して、基本ポインター型にキャストしようとしましたが、これも機能しませんでした。

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

c++ - カスタム Directshow フィルターのプロパティ ページ

カスタム DirectShow 変換フィルターを作成して登録し、DLL にエクスポートすることができました。GraphEdit と C++ テスト プログラムの両方で正しく動作するようになりました。私の次の目標は、テスト アプリまたは GraphEdit のプロパティ ページから、フィルターのメイン パラメーターを制御するカスタム インターフェイスを作成することです。

これらの指示に従って、カスタム インターフェイスが C++ テスト プログラムから適切に動作するようになりました。ただし、プロパティ ページで問題が発生しています。GraphEdit で「要求されたプロパティ ページを表示できませんでした」というエラー メッセージが表示され続けます。

デバッグ中に、(CBasePropertyPage から派生したカスタム プロパティ ページ クラスで) 呼び出される唯一のメソッドがOnConnect()and OnDisconnect()- であることがわかりました。これら 2 つのメソッドの間で、いくつかの呼び出しが CBasePropertyPage メソッド (基本クラスの cprop.cpp ファイル) に対して行われ、次のようになるまですべてが正常に見えます。

STDMETHODIMP CBasePropertyPage::Activate(HWND hwndParent, LPCRECT pRect, BOOL fModal)

より正確には

m_hwnd = CreateDialogParam(g_hInst, MAKEINTRESOURCE(m_DialogId), hwndParent, DialogProc, (LPARAM) this);

私は常にm_hwnd0 になるため、メソッドはエラーを返します。GetLastError()この命令の直後に追加しようとしましたが、常に 0 が返され、エラーは発生しません。さらに、のすべてのパラメータはCreateDialogParam()適切に初期化されているように見えます...

どんな助けでも大歓迎です!


編集

今のところ、少なくとも実用的な例を得るために、 MSDN チュートリアルで説明されているものと同じリソース/テンプレートを使用しました。


---編集 2--- :

もう少しデバッグしながら、Dialog リソースからすべてのコントロール (ボタン、スクローラー) を削除してみました。その後...すべてが機能します。CreateDialogParam()正しい値を返し、私のクラスOnActivate()が呼び出されます。最終的に、GraphEdit に「フィルター プロパティ」ページが表示されますが、空です (既定のダイアログ ウィンドウを除く)。

しかし、MF コマンド ボタンなどのコントロールを使用するとすぐに、以前の問題が発生します。

DirectShow の基本クラスと私が使用しているコントロールとの間に何らかの非互換性はありますか? (もしそうなら、提供されたサンプルで何も言及されていないのはなぜですか?) プロパティ ページにコントロールを追加する簡単な方法はありますか?

(私は間違いなく、GUI と Win32 コントロールの専門家ではありません...)

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

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

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

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

それから私が走るとき:

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

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

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

c++ - コンテナのメンバータイプの生成

独自のコンテナを定義するときは、たとえば次のように、多数のメンバータイプを提供する必要があります。

std::iterator<T>自分のイテレータの場合と同様に、継承できる基本クラスのテンプレートはありますか?

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

c# - ジェネリックスなしで基本クラスで派生クラスの型を取得するにはどうすればよいですか?

私の基本クラスは、派生クラスのリフレクションを使用して、それらにいくつかの機能を提供します。現在、私はこのようにしています:

ジェネリックなしでこれを行うことはできますか?

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

c# - C# では、基本クラスをプライベートとして宣言するにはどうすればよいですか?

私はC++でこれを行う方法を知っています:

C#で同様にするにはどうすればよいですか?

これは私がこれまでにC#で持っているものです

baseClass2 がプライベートであることを指定するにはどうすればよいですか?

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

c++ - コンパイル時にクラスのすべての基本クラスを照会する方法は?

クラスが class の基底クラスであるかどうかをstd::is_base_of<A,B>::value確認できます。class のすべての基本クラスをコンパイラに照会することも可能 ですか?たとえば、のすべての基本クラスを含む std::tuple を返すようなものですか?ABBbase_classes_of<B>B

evtlはありますか?これを達成できるg ++の非標準拡張機能?

これがまったく不可能な場合、誰かがその理由を知っていますか? コンパイラが簡単に利用できるはずのかなり基本的な情報のように聞こえますか?

例: