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

c++ - 抽象基本クラスからのオーバーロードされた関数へのアクセス

この質問は以前に何らかの形で尋ねられたことを知っています。しかし、私はまだ混乱しています。

2つのクラスがあるとします。

クラスAの非仮想関数の可視性をクラスBで公開したい場合....どうすればいいですか?? ...つまり、現在、この方法で非仮想関数を呼び出すことができます

私はこれを避けたいです^

そしてこれを置く解決策

in public B は A の仮想関数を参照します....非仮想関数ではありません...だから、それは解決策ではないと思います。

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

c# - 派生クラスの型である抽象基本クラスのメンバーを宣言する方法はありますか?

この基本クラスから派生するクラスの型と一致するメンバーを宣言する抽象基本クラスがあるとします。

parent各派生クラスのフィールドは から派生したものになる可能性があるため、これは機能しませんBaseClassparentのフィールドDerivedClass1が型のみであることを確認したいDerivedClass1。だから私はおそらくジェネリックを使うべきだと考えています。

これは紛らわしく循環しているように見えるかもしれませんが、コンパイルされます。基本的には、ジェネリックから派生する必要parentがあるタイプです。したがって、派生クラスは次のようになります。TBaseClass

問題は、宣言するときに自分で型の一致を強制する必要があることDerivedClassです。誰かがこのようなことをするのを止めるものは何もありません:

ベースで宣言されたメンバーの型が派生型と確実に一致するように、C# にはこれを行う方法がありますか?

これは、この C++ の質問が尋ねようとしていたものと似ていると思います:派生クラスの戻り値の型を持つ関数を持つ派生クラスの抽象基本クラス

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

c++ - それ自体をパラメーターとして受け取る抽象基本クラスの仮想純粋メソッド

言葉遣いが下手で申し訳ありませんが、質問の表現方法がよくわかりません。

私は、それ自体のインスタンスを取る純粋な仮想演算子 += を持つ基本クラス A を持っています。派生クラス B では、(A ではなく) B のインスタンスを取るように、基本クラスの operator+= をオーバーライドしたいと思います。

これが機能しない理由は理解しています。2 つのメソッドは、異なる引数を期待するため、異なる関数です。ただし、A から派生したクラスが、派生クラスのインスタンスを引数として取る operator+= を実装することを保証する何らかの方法が必要であると思います。

これに対する解決策を教えてください。どうもありがとう!

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

python - 別のクラスからプロパティを取得する関数をクラスで使用するにはどうすればよいですか?

クラスに、他のクラスのプロパティを使用する別のクラスの関数を使用させようとしています。

問題の詳細は次のとおりです。

という基本クラスがあるとしましょうWorker。それぞれWorkerが に取り組みたいと考えていHouseます。それぞれに、選択して完了することができる のWorkerリストがあります。TaskそれぞれTaskname、タスクを完了するのに必要な 、 、 があり、 が実際にタスクを実行できるようにする機能もdescriptionあります。energy_costdo_taskWorker

これをコードで表すと次のようになります。

Workerしかし、aを実行するために a の属性の1 つにアクセスする必要がある場合はどうなるTaskでしょうか。タスクが完了する速度を指定するWorkerという属性があったとします。work_speedが何であるかをどのようにTask知ることWorkerができwork_speedますか? 次のように、 の task_list内のインスタンスWorkerにインスタンスを渡すことができます。TaskWorker

しかし、それは不格好であり、非常に不必要に思えます。

Taska のクラス定義でそれぞれを継承することもできWorkerますが、追加の属性は必要なく、do_task複数の がある場合はメソッドがオーバーライドされTaskます。

理想的には、Workerはの属性にアクセスできるようTaskにフォーム内で a を実行できる必要があり、オブジェクト内で定義されたようなプロパティを使用できる必要があります。worker.do_task()do_taskWorkerenergy_costTask

どうすればそれを行うことができますか?