mql5におけるOOP、テンプレート、マクロ、微妙な使い分け - ページ 9 12345678910111213141516...28 新しいコメント Alexey Navoykov 2019.01.25 16:08 #81 Ilya Malev:スタックオーバーフロー」と表示されました。) やっぱりゴキブリかなぁ...。まあ、コンパイラではなく、実行時に コンパイラが反応するはずなんですけどね。 以下は、VS 2010で試した内容です。 class A { public: virtual int f2() = 0; }; class B : public A { public: virtual int f2() { return A::f2(); } }; B b; コンパイルエラーが 発生します。エラー 1 エラー LNK2001: 未解決の外部シンボル "public: virtual __thiscall A::f2(void)" があります。 しかし、Metaeditorは何も言いません。よくないですね。 Ilya Malev 2019.01.25 16:29 #82 祖先関数を= 0 で呼び出すと、自分自身を呼び出すことになることが判明したのです。もし、このエラーを自分で見つけたら、その恩恵にあずかることができるかもしれません...。 Alexey Viktorov 2019.01.25 16:32 #83 Alexey Navoykov:コンパイラはこのように反応するはずです。VS 2010で試してみました。コンパイルエラーが 発生します。エラー 1 エラー LNK2001: 未解決の外部シンボル "public: virtual __thiscall A::f2(void)" があります。メタエディターは何も言いません。よくないですね。アレクセイ、説明してくれ、なぜmqlがCのコピーなら、それは必ずしも絶対に同一でなければならず、左へ一歩、右へ一歩 - 銃殺刑? 開発者が不注意だっただけ?しかし、どんな言語もループと条件の上に成り立っている。それ以外はすべてトレーラーに収録されています。なぜ誰も、他の言語がOOPの部分などでCと似ていると要求しないのでしょうか? Alexey Navoykov 2019.01.25 16:55 #84 Alexey Viktorov:アレクセイ、どうしてmqlがCと同じなら、絶対に同じで一歩左、一歩右の銃殺刑にしなければならないのか、指で説明してくれないかな? 開発者が不注意だっただけ?しかし、どんな言語もループと条件の上に成り立っている。それ以外はすべてトレーラーに収録されています。なぜ誰も、他の言語がOOPの部分などでCと似ていると要求しないのでしょうか? 完全に同じであることが重要なのではありません。しかし、その前に、「他の言語ではどうなんだ?そして、異なる(正しい)動作をするC++が例として出されると、MQLはC++ではないので同一視すべきではないと、古いわだかまりを持ち始める。 あなたは決心する必要があります。 Dmitry Fedoseev 2019.01.25 17:10 #85 Alexey Viktorov:コードを書きやすくしたり、短くしたり、少なくともエラーから守ったりするための例を示してもらえますか?そして、抽象的な機能ではなく、Expert Advisorやインジケータで実際の取引条件に近い機能をお願いします。まさかね。男たちは、妄想を現実のものにしようとしているだけだ。 Nikolai Semko 2019.01.25 17:27 #86 Dmitry Fedoseev:まさかね。男たちは、妄想を現実に引き伸ばそうとしているだけなのだ。 これはとても有効な手段だと思います。ファンタジーを現実に引き延ばすのですから。そこが開発のポイントですとても勉強になる議論でした。(笑): ありがとうございます。 Ilya Malev 2019.01.25 17:32 #87 Alexey Navoykov:そうですね。でも、私はずっと別の選択肢を使っています。すべてのインターフェースは、もともと中間テンプレートクラスとして設計されています。 このように、このようなインタフェースをいくつも組み合わせて、継承の連鎖を作ることができます。もちろん、dynamic_castはできませんが、それほど頻繁に必要なわけではありません。 主な作業は、関数にそれらを渡すことです。じっくり読ませていただきました!それにしても面白い動きですね。今まで思いつかなかった =)。私も気ままに実験してみます...。 Alexey Navoykov 2019.01.25 17:34 #88 Nikolai Semko: 私にとって、ファンタジーを現実に引き伸ばすということは、とても有効なエクササイズです。そこが開発のポイントです非常に勉強になる議論です。ありがとうございます。そして何より、実りあるものでした!開発者は私たちの声に耳を傾け、誰もが何年もつまずき続けてきたこのバグを修正することにしたのです。 しかし、一部の掲示板利用者の破壊的な態度には、確かに驚かされます。彼らは、自分では発展せず、驚くべき執念で他人の邪魔をしようとするのです。 Ilya Malev 2019.01.25 17:49 #89 >> もちろん、これで dynamic_cast をすることはできませんが、それほど頻繁に必要なわけではありません。 なんでやらないんだ、問題ないだろ )しかし、コンパイル時にキャスティングエラーが検出されないという悪夢が待っています。) Alexey Navoykov 2019.01.25 18:29 #90 Ilya Malev:>> もちろん、これで dynamic_cast をすることはできませんが、それほど頻繁に必要なわけではありません。 なんでやらないんだ、問題ないだろ )しかし、コンパイル時にキャスティングエラーが検出されないという悪夢が待っています :)結局のところ、継承の連鎖はどうにでもなります。Interface<CBase>かInterface<C<B<A<CBase>>か、無数のバリエーションがあります。 CBaseをすべての可能なバリエーションに一貫してキャストしなければなりませんが、これは非現実的なことです。 インターフェイスの情報をクラスオブジェクトに 格納し、既存のインターフェイスパッドに加えて、独立したインターフェイスクラスを作成し、そのパッドのラッパーとして機能させることを計画していたのを覚えています。でも、そんなことは余計なお世話だと思うようになったんです。実際のところ、ベースクラスをどのインターフェイスにキャストする必要があるのか見たことがありません。 唯一の選択肢は、デバッグのためにクラスがこのインターフェイスをサポートしているかどうかを調べることですが、そのためにキャストをする必要はありません。 12345678910111213141516...28 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
スタックオーバーフロー」と表示されました。)
やっぱりゴキブリかなぁ...。まあ、コンパイラではなく、実行時に コンパイラが反応するはずなんですけどね。
以下は、VS 2010で試した内容です。
コンパイルエラーが 発生します。エラー 1 エラー LNK2001: 未解決の外部シンボル "public: virtual __thiscall A::f2(void)" があります。
しかし、Metaeditorは何も言いません。よくないですね。
コンパイラはこのように反応するはずです。
VS 2010で試してみました。
コンパイルエラーが 発生します。エラー 1 エラー LNK2001: 未解決の外部シンボル "public: virtual __thiscall A::f2(void)" があります。
メタエディターは何も言いません。よくないですね。
アレクセイ、説明してくれ、なぜmqlがCのコピーなら、それは必ずしも絶対に同一でなければならず、左へ一歩、右へ一歩 - 銃殺刑?
開発者が不注意だっただけ?しかし、どんな言語もループと条件の上に成り立っている。それ以外はすべてトレーラーに収録されています。なぜ誰も、他の言語がOOPの部分などでCと似ていると要求しないのでしょうか?
アレクセイ、どうしてmqlがCと同じなら、絶対に同じで一歩左、一歩右の銃殺刑にしなければならないのか、指で説明してくれないかな?
開発者が不注意だっただけ?しかし、どんな言語もループと条件の上に成り立っている。それ以外はすべてトレーラーに収録されています。なぜ誰も、他の言語がOOPの部分などでCと似ていると要求しないのでしょうか?
コードを書きやすくしたり、短くしたり、少なくともエラーから守ったりするための例を示してもらえますか?そして、抽象的な機能ではなく、Expert Advisorやインジケータで実際の取引条件に近い機能をお願いします。
まさかね。男たちは、妄想を現実のものにしようとしているだけだ。
まさかね。男たちは、妄想を現実に引き伸ばそうとしているだけなのだ。
そうですね。でも、私はずっと別の選択肢を使っています。すべてのインターフェースは、もともと中間テンプレートクラスとして設計されています。
このように、このようなインタフェースをいくつも組み合わせて、継承の連鎖を作ることができます。もちろん、dynamic_castはできませんが、それほど頻繁に必要なわけではありません。 主な作業は、関数にそれらを渡すことです。じっくり読ませていただきました!それにしても面白い動きですね。今まで思いつかなかった =)。私も気ままに実験してみます...。
私にとって、ファンタジーを現実に引き伸ばすということは、とても有効なエクササイズです。そこが開発のポイントです
そして何より、実りあるものでした!開発者は私たちの声に耳を傾け、誰もが何年もつまずき続けてきたこのバグを修正することにしたのです。
しかし、一部の掲示板利用者の破壊的な態度には、確かに驚かされます。彼らは、自分では発展せず、驚くべき執念で他人の邪魔をしようとするのです。
>> もちろん、これで dynamic_cast をすることはできませんが、それほど頻繁に必要なわけではありません。
なんでやらないんだ、問題ないだろ )しかし、コンパイル時にキャスティングエラーが検出されないという悪夢が待っています。)
>> もちろん、これで dynamic_cast をすることはできませんが、それほど頻繁に必要なわけではありません。
なんでやらないんだ、問題ないだろ )しかし、コンパイル時にキャスティングエラーが検出されないという悪夢が待っています :)
結局のところ、継承の連鎖はどうにでもなります。Interface<CBase>かInterface<C<B<A<CBase>>か、無数のバリエーションがあります。 CBaseをすべての可能なバリエーションに一貫してキャストしなければなりませんが、これは非現実的なことです。
インターフェイスの情報をクラスオブジェクトに 格納し、既存のインターフェイスパッドに加えて、独立したインターフェイスクラスを作成し、そのパッドのラッパーとして機能させることを計画していたのを覚えています。でも、そんなことは余計なお世話だと思うようになったんです。実際のところ、ベースクラスをどのインターフェイスにキャストする必要があるのか見たことがありません。 唯一の選択肢は、デバッグのためにクラスがこのインターフェイスをサポートしているかどうかを調べることですが、そのためにキャストをする必要はありません。