問題タブ [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++ - メンバーの質問へのポインター
$4.11/2 州 -
B
「型 cv のメンバーへのポインター」型の右辺値 ( はクラス型) は、「型cvのメンバーへのポインター」 型 の右辺値に変換できます。ここで、は の派生クラス (節 10) です。がアクセス不能 (節 11)、あいまい (10.2) または仮想 (10.1) の基底クラスである 場合、この変換を必要とするプログラムは形式が正しくありません。T
B
D
T
D
B
B
D
B
私の質問は、仮想基底クラスではないという制限があるのはなぜD
ですか?
c# - 基本クラスで関数を実装する一般的な方法を探しています
ドメインレイヤーで仕様パターンの簡単な実装をしようとしています。
このような仕様でいっぱいの静的クラスがある場合:
それから私はこのような素晴らしいことをすることができます:
Fooにboolメソッドを追加して、特定のインスタンスが仕様を満たしているかどうかを判断することもできます。
Fooは、すべてのドメインエンティティと同様に、DomainObjectを拡張しますが、Meets()の汎用実装をDomainObjectに入れて、Meets()をすべてのエンティティに個別に実装する手間を省く方法はありますか?
c++ - C++でプライベート基本クラスへのキャストを実装する方法
C ++でプライベート基本クラスへのキャストを実装するにはどうすればよいですか?友達を追加するなどのハックは使いたくない。パブリックキャスティング演算子の定義は機能しない。
編集 :
たとえば、私は持っています:
EDIT2
なぜ私はこれをするのですか?
非常に重量があり、いくつかの同様のタイプ(VelocityX VelocityYなど)のプロパティを定義する必要があるとします。次に、これらのプロパティの任意のセットを持つことができるクラスを持つことができるようにしたいと思います。これらのプロパティを処理したい場合は、バリエーションごとに実装を追加するのではなく、基本タイプにキャストしたいのは明らかです。プライベートインターフェイスを暗黙的に表示するよりも、必要な場所に明示的にキャストする方がよいため、パブリック継承は使用しません。本当の問題ではありませんが、解決策が欲しいです:)
c++ - 基本クラスへのポインター
次のクラスがある場合:
どこかでB
、私が持っているクラスのポインターが実際にクラスを指していることを検出しましC
たが、関数にはクラスへのポインターが必要です。A
クラスへのポインターを取得するにはどうすればよいA
ですか?
c# - カスタムタイプの使用を妨げる抽象化、実装で従うべきルールは何ですか?
アプリケーション内の C# スクリプトで使用するカスタム型システムを作成しました。スクリプトはオンザフライでコンパイルされ、アプリケーションの内部データとの対話を可能にします。この型システムは、 のようなインターフェイスを使用して抽象的な方法で設計されていますIValue
。の実装は, ,であるIValue
可能性があります(他の多くの中でも、これは私の問題を実証するのに十分です)。RefString
RefInteger
RefDouble
ここで行き詰まるところまで来ました... これらのIValue
オブジェクトの使用はやや不自然です。常にインターフェイスを使用してオブジェクトと対話することは適切な設計と見なされますが、暗黙的な変換を定義したり、インターフェイスの演算子をオーバーロードしたりする可能性はありません。これは、適切な演算子が使用されるように、醜い明示的なキャストが避けられない状況につながります。
例:
値型を含む式の C# の場合、暗黙的な変換が提供されます。このようなカスタム システムを設計するにはどうすればよいでしょうか?
型システムを書き直して、インターフェイスを削除し、基本クラスIValue
を導入しました。RefValue
このようにして、すでに明示的なキャストの一部を削除できます。この基本クラスにいくつかの演算子のオーバーロードを実装しましたが、デフォルトの変換演算子で多くの問題が発生しました...これに加えて、演算子の実装で実装するロジックには、システムの型に関する多くの知識が関係しています。これはどういうわけかまだ行かなければならない方法だと思いますが、これを適切かつ安全な方法で実装するために従うべきルールは何ですか?
編集:しばらく苦労した後、私が見つけることができたルールのいくつかは次のとおりです。
- 基本型 (int、double、string など) からの変換演算子のみを暗黙的に宣言します。
- 基本型への変換を明示的に宣言します (int への暗黙的なキャストを避けるため!! よくあることですが、なぜでしょうか?)
- あいまいな呼び出しを避けるために、+、-、/、* 演算子を基本クラスと派生クラスでオーバーライドしないでください。【その後の行き方は?派生クラスで操作のオーバーロードを行いましたが、これには使用時にキャストが必要であり、これもまた醜いです...]
c++ - 基底クラス参照から派生クラス メソッドを呼び出す
これにより、「Class Unusual_Material」がコンソールに表示されるようにしたいと思います。これを達成する方法はありますか?私のプログラムには、他のより具体的なマテリアルが派生するクラス Material があります。メソッド Material::foo() は、ほとんどのマテリアルに適した Material のメソッドを表しますが、まれに、異常なプロパティを持つマテリアルに対して別の foo() を定義する必要があります。
私のプログラムのすべてのオブジェクトには、Material フィールドが含まれています。それらに通常とは異なるマテリアルが割り当てられている場合は、派生した通常とは異なる foo が呼び出されるようにしたいと思います。
これはおそらく非常に簡単か不可能のどちらかですが、どちらにしてもわかりません。
ありがとう
c++ - 基本テンプレート クラスのデータ メンバーは、派生テンプレート クラスでは表示されませんか?
次の C++ コードを考えてみましょう。
コンパイル エラーが発生しました: In member function void B<Derived>::foo()
:
template_inherit.cpp:12: エラー: 'usable_' はこのスコープで宣言されていません。
何故ですか ?良い修正はありますか?
android - 同じリスナーを使用する複数のアクティビティ
4 つのボタン (アクティビティごとに 1 つ) を含む xml-footer をすべて含む 4 つのアクティビティを取得しました。これらのボタンに onclicklisteners を設定したいと思います (フッターの自作メニューです)。
問題は、コードを再利用できるようにするにはどうすればリスナーを使用できるかということです。私には2つのアイデアがあります:
onclicklistener を実装するクラスを作成し、すべてのアクティビティでボタンを取得してから、リスナー クラスの新しいインスタンスを作成し、button.setOnClickListener(onClickListener) を実行しますイベント?そして、アクティビティを開始するためのインテントをどのように作成しますか? 通常は次のようにします: インテント インテント = 新しいインテント(FromActivity.this, ToAcitivty.class) しかし、FromActivity への参照がありません。
アクティビティから拡張する基本クラスを作成すると、4 つのアクティビティが基本クラスから拡張されます。次に、基本クラスでリスナーをセットアップしたいと思います。ここでの問題は、 Button button1 = (Button)findViewById(R.id.menu_button1); を実行してもボタンへの参照を取得できないことです。button1 は null になります。これは基本クラスではなくアクティビティで行う必要があるため、setEventView も呼び出していません。
何か案は?
ありがとうございました
asp.net-mvc - ASP.NET MVC:基本コントローラークラスのカスタム属性を無視します
プロジェクトには、BaseControllerという名前のコントローラーからすべて継承するコントローラーがいくつかあります。BaseControllerクラス全体に適用するカスタム属性を作成しました。これにより、いずれかのコントローラーでアクションが実行されるたびに、その属性が最初に実行されます。
問題は、その属性を無視したいコントローラーアクションがいくつかあることですが、その方法がわかりません。
誰か助けてもらえますか?私はMVC1を使用しています。
ありがとう。
asp.net - カスタム UserControl で基本クラス (ascx) のプロパティを定義し、aspx で子クラスをインスタンス化します。
そのような3つのカスタムユーザーコントロールを定義しました:
次に、基本クラスのプロパティを持つ別の UserControl を定義しました。
aspx ファイルでは、このコントロールを使用していますが、 MyAbstractControlの代わりにMyConcreteControl1のインスタンスを定義したいと考えています。
しかし、私が書くと:
ChildElementはMyAbstractControlインスタンスとしてのみ定義できます。コンテキストに応じてMyConcreteControl1またはMyConcreteControl2インスタンスを作成したいのですが、方法がわかりません。