テンプレート・パラメータ = void* のコンパイラ・バグ - ページ 18 1...11121314151617181920 新しいコメント Stanislav Dray 2018.12.21 01:25 #171 Igor Makanu:現在、VSフォームを.dllでMT5に簡単な方法で添付したいのですが ))))- ボタンのクリックハンドラをクラスでラップし、ハンドラ関数のポインタ配列をトラバースして呼び出したいのですが、EAのメインコードでVSと同じ関数名、つまりbutton2_Click() ...button2_Click() を書けるようにしたいのです。 SZY:これはEOPの 問題です))))悪気はないのですが、よく思い出してしまうのです。 pavlick_ 2018.12.21 01:41 #172 Ilya Malev:- 動的なOOPの中で自動的な構造を作ることはナンセンスであるでは、スタックオブジェクト:myclass obj;はナンセンスなのか?それなら、私はハンディキャップを負っていることになりますね :) Ilya Malev 2018.12.21 01:45 #173 pavlick_:では、スタックオブジェクト:myclass obj;はナンセンスなのか?だから、私は手芸家なんです :)いろんなタスクがあるんですよ。レトリックの練習は、具体的なタスクを記述しなければ、何でも思いつく...。 そう、「スタッカブル」(自動的な意味か)オブジェクトは基本的にナンセンスなのです。私の率直な意見ですが、これは決して真実ではなく、最後の例でもないのですが......。 Ilya Malev 2018.12.21 01:54 #174 ジョーカーには、OOPの主要な機能であるポリモーフィズムの 特性を発揮しないオブジェクトが必要なのですね。このような変数に、内容によって異なる性質を持つオブジェクトを代入することはないでしょう。リスト内のこの「変数」に別のオブジェクトをマッピングすることは全くできなくなります。なぜオブジェクトが必要なのですか? 代わりに構造体を使ったほうがいいのでは?μl構造体は自分自身への参照を返すことができないからでしょうか...。そして、創造、破壊、自己複製など、絶え間ない暗黒が始まる。 pavlick_ 2018.12.21 02:39 #175 Ilya Malev: OOPの主要な機能であるポリモーフィズムの 特性を満たさないオブジェクトが欲しいのですか?このような変数に、内容によって異なる性質を持つオブジェクトを代入することはないでしょう。リスト内のこの「変数」に別のオブジェクトをマッピングすることは全くできなくなります。なぜオブジェクトが必要なのですか? 代わりに構造体を使ったほうがいいのでは?μl構造体は自分自身への参照を返すことができないからでしょうか...。そして、創造、破壊、自己複製など、絶え間ない暗黒が始まる。 ポリモーフィズムのない生き方 ...もし、90%以上のケースで多型がなくても大丈夫だと言ったら?SOLID依存関係逆転の原則」を例にとると、まともなプロガーであれば、あらゆるところに抽象化、仮想メソッドを作るべきです(もちろん、高いオーバーヘッドを伴いますが)。C#の熟練者なら、このような書き方をするはずだ。https://pro-prof.com/forums/topic/dependency-inversion-principle。 あるいは、テンプレートを使って、こんな風に書くこともできます。 class Lamp { public: void activate(); void deactivate();}; template <typename T> class Button { Button(T& switchable) : _switchable(&switchable) { } void toggle() { if (_buttonIsInOnPosition) { _switchable->deactivate(); _buttonIsInOnPosition = false; } else { _switchable->activate(); _buttonIsInOnPosition = true; } } private: bool _buttonIsInOnPosition{false}; T* _switchable; } int main() { Lamp l; Button<Lamp> b(l) b.toggle();} また、Buttonはポリモーフィズムやインターフェイスを一切使用せず、ディテールに依存しない。ポリモーフィズムにはニッチがありますが、それは彼らが言うよりずっと狭いものです。 ZS: まあ、誰も禁じてはいないんですけどね。 derived1 obj1; baseclass *p1 = &obj1; derived2 obj2; baseclass *p2 = &obj2; pass_through_generalized_algoritm(p1); pass_through_generalized_algoritm(p2); [CLOSED] : Compiler bug パネルとダイアログ - CButton パネルとダイアログ - CBmpButton Ilya Malev 2018.12.21 02:44 #176 もちろん、ポリモーフィズムを使わないこともできますが、この場合、オブジェクトではなく、単純な構造 体を使う方が、はるかに誠実で論理的です。そうでなければ、顕微鏡で釘を打つことになります。より正確には、µl5の場合、非オブジェクト構造を完全に使用できない(オブジェクトと異なり、ポインタを渡すことができない)「実装機能」を回避しているのです。これは全く別の問題で、もはやOOPではなく、ただのOOです Ilya Malev 2018.12.21 02:48 #177 pavlick_: ZS: まあ、誰も禁じてはいないんですけどね。 いろんな松葉杖やスケマタを禁止する人はいないけど、なぜ?例えば、自動生成されたオブジェクトが、思いもよらないところで突然自爆してくれたら楽しいでしょう? Ilya Malev 2018.12.21 02:53 #178 OOPのポイントは、あなたが選んだボタンを押す方法を使うことではなく、テンプレートや関数ポインタで実装できるのと同じように、システムのあらゆるオブジェクトに、リストのような、CArrayObjなどの ような松葉杖や関連する面倒なことをせずに、リスト構造に自己組織化して、適切なタイミングで任意の選択を作成できる、 Select, Query, Compare, Sortなどのメソッドをオーバーロードできるメソッドを適用するだけなんだ。(Clone/Copyでも、リスト/配列にコピーするかどうか、コピーする場合はどのようにコピーするかを、各オブジェクトが勝手に 決めることができます)。 pavlick_ 2018.12.21 02:57 #179 Ilya Malev:松葉杖やスケマタを作ることを誰も禁じてはいないが、なぜ?例えば、オートオブジェクトが予期せぬ時に突然破壊されたら、面白いですよね?なぜなら、スタックオブジェクトは、ヒープ内のオブジェクトよりもはるかに高速だからです(メモリ割り当て)。自滅か?- それは何か新しい発見ですね :)しかし、もちろん必要な場合もあります。例えば、オブジェクトの数が実行時にしか分からない場合などです。 ZS: そうでない方が快適かもしれませんね、個人的な問題ですが。 pavlick_ 2018.12.21 03:00 #180 Ilya Malev: OOPのポイントは、あなたが選んだボタンを押す方法を使うことではなく、テンプレートや関数ポインタで実装できるのと同じように、システムのあらゆるオブジェクトに、リストのような、CArrayObjなどのような松葉杖や関連する面倒なことをせずに、リスト構造に自己組織化して、適切なタイミングで任意の選択を作成できる、 Select, Query, Compare, Sortなどのメソッドをオーバーロードできるメソッドを適用するだけなんだ。(Clone/Copyでも、リスト/配列にコピーするかどうか、コピーする場合はどのようにコピーするかを、各オブジェクトが勝手に 判断できる場合)。私は、-ポリモーフィズムは 独自のニッチを持っている、と書きました。しかし、実践してみると、(少なくとも私個人は)それほど大きな意味はないことがわかります。テンプレートで問題を解決する方がよっぽどいい。 1...11121314151617181920 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
現在、VSフォームを.dllでMT5に簡単な方法で添付したいのですが ))))- ボタンのクリックハンドラをクラスでラップし、ハンドラ関数のポインタ配列をトラバースして呼び出したいのですが、EAのメインコードでVSと同じ関数名、つまりbutton2_Click() ...button2_Click() を書けるようにしたいのです。
SZY:これはEOPの 問題です))))
悪気はないのですが、よく思い出してしまうのです。
- 動的なOOPの中で自動的な構造を作ることはナンセンスである
では、スタックオブジェクト:myclass obj;はナンセンスなのか?それなら、私はハンディキャップを負っていることになりますね :)
では、スタックオブジェクト:myclass obj;はナンセンスなのか?だから、私は手芸家なんです :)
いろんなタスクがあるんですよ。レトリックの練習は、具体的なタスクを記述しなければ、何でも思いつく...。
そう、「スタッカブル」(自動的な意味か)オブジェクトは基本的にナンセンスなのです。私の率直な意見ですが、これは決して真実ではなく、最後の例でもないのですが......。OOPの主要な機能であるポリモーフィズムの 特性を満たさないオブジェクトが欲しいのですか?このような変数に、内容によって異なる性質を持つオブジェクトを代入することはないでしょう。リスト内のこの「変数」に別のオブジェクトをマッピングすることは全くできなくなります。なぜオブジェクトが必要なのですか? 代わりに構造体を使ったほうがいいのでは?μl構造体は自分自身への参照を返すことができないからでしょうか...。そして、創造、破壊、自己複製など、絶え間ない暗黒が始まる。
ポリモーフィズムのない生き方 ...もし、90%以上のケースで多型がなくても大丈夫だと言ったら?SOLID依存関係逆転の原則」を例にとると、まともなプロガーであれば、あらゆるところに抽象化、仮想メソッドを作るべきです(もちろん、高いオーバーヘッドを伴いますが)。C#の熟練者なら、このような書き方をするはずだ。https://pro-prof.com/forums/topic/dependency-inversion-principle。 あるいは、テンプレートを使って、こんな風に書くこともできます。
public:
void activate();
void deactivate();
};
template <typename T>
class Button {
Button(T& switchable)
: _switchable(&switchable) {
}
void toggle() {
if (_buttonIsInOnPosition) {
_switchable->deactivate();
_buttonIsInOnPosition = false;
} else {
_switchable->activate();
_buttonIsInOnPosition = true;
}
}
private:
bool _buttonIsInOnPosition{false};
T* _switchable;
}
int main() {
Lamp l;
Button<Lamp> b(l)
b.toggle();
}
また、Buttonはポリモーフィズムやインターフェイスを一切使用せず、ディテールに依存しない。ポリモーフィズムにはニッチがありますが、それは彼らが言うよりずっと狭いものです。
ZS: まあ、誰も禁じてはいないんですけどね。
ZS: まあ、誰も禁じてはいないんですけどね。
いろんな松葉杖やスケマタを禁止する人はいないけど、なぜ?例えば、自動生成されたオブジェクトが、思いもよらないところで突然自爆してくれたら楽しいでしょう?
松葉杖やスケマタを作ることを誰も禁じてはいないが、なぜ?例えば、オートオブジェクトが予期せぬ時に突然破壊されたら、面白いですよね?
なぜなら、スタックオブジェクトは、ヒープ内のオブジェクトよりもはるかに高速だからです(メモリ割り当て)。自滅か?- それは何か新しい発見ですね :)しかし、もちろん必要な場合もあります。例えば、オブジェクトの数が実行時にしか分からない場合などです。
ZS: そうでない方が快適かもしれませんね、個人的な問題ですが。
OOPのポイントは、あなたが選んだボタンを押す方法を使うことではなく、テンプレートや関数ポインタで実装できるのと同じように、システムのあらゆるオブジェクトに、リストのような、CArrayObjなどのような松葉杖や関連する面倒なことをせずに、リスト構造に自己組織化して、適切なタイミングで任意の選択を作成できる、 Select, Query, Compare, Sortなどのメソッドをオーバーロードできるメソッドを適用するだけなんだ。(Clone/Copyでも、リスト/配列にコピーするかどうか、コピーする場合はどのようにコピーするかを、各オブジェクトが勝手に 判断できる場合)。
私は、-ポリモーフィズムは 独自のニッチを持っている、と書きました。しかし、実践してみると、(少なくとも私個人は)それほど大きな意味はないことがわかります。テンプレートで問題を解決する方がよっぽどいい。