エラー、バグ、質問 - ページ 1785 1...177817791780178117821783178417851786178717881789179017911792...3185 新しいコメント A100 2017.02.07 11:26 #17841 fxsaber: デストラクタが何のためにあるかは知っている。なぜ、仮想という言葉を定義の前に書かなければならないのか、私にはよくわかりません。 C++ではデストラクタが異なるため、コードの互換性のために必要です。 fxsaber 2017.02.07 11:31 #17842 A100: C++ではデストラクタが異なるため、コードの互換性のために必要です。 了解です、ありがとうございます。MQL5への移植は多いのでしょうか?- 例が具体的なのはそのためですか? Anatoli Kazharski 2017.02.07 11:37 #17843 fxsaber: デストラクタが何に使われるかは知っている。なぜ、定義の前にバーチャルという言葉を付けなければならないのか、理解できない。仮想関数とデストラクタ >>基本的なルールとして、クラス内に少なくとも1つの仮想関数がある場合は、デストラクタも仮想にする必要があります。デストラクタはデフォルトではvirtualではないので、明示的に宣言する必要があることを覚えておいてください。これをしないと、ほぼ間違いなくプログラムにメモリリークが発生します。この理由もまた、知性を必要としない。いくつかの例を見てみましょう。 A100 2017.02.07 11:50 #17844 fxsaber: 了解です、ありがとうございます。MQL5への移植は多いのでしょうか?- 例が具体的なのはそのためですか? 移植はあまりしない。一見しただけで具体的専門家」の中には、3つ以上の派生クラスは 有害であるとここに書いている人もいます。私は、適切な初期化が必要な基本クラスが3~4個しかなく、その後に本当のデリバティブが来ることが多いのです。 fxsaber 2017.02.07 11:53 #17845 Anatoli Kazharski:仮想関数とデストラクタ >>int main(){ A * pA = new B; delete pA; return EXIT_SUCCESS;}このとき、オブジェクトは正常に構築されますが、破壊されるとき、派生クラスのデストラクタが呼ばれないため、メモリリークが発生します。削除はベースクラスへのポインタを介して行われ、コンパイラはデストラクタを呼び出すためにアーリーバインディングを使用するからである。ベースクラスのデストラクタは、派生クラスのデストラクタについて何も知らないので、呼び出すことができません。そ の結果、派生クラス用に確保されたメモリの一部が回復不能な状態で失われる。これを避けるためには、ベースクラス内のデストラクタをvirtualに宣言 する必要があります。ベースとなるデストラクタを仮想化することで、派生するデストラクタの情報が表示される理由がアーキテクチャ的に理解できない。ベースが仮想の場合、派生デストラクタを定義することで、ベースのデストラクタを派生デストラクタに置き換えることになると理解しています。しかし、その場合、この例ではベースのデストラクタは呼ばれないはずです。明らかに、この仕組みが理解できていない。MQL5で仮想関数に問題があったことはありません。私は彼らのおかげでOOPがたくさん好きになりました。すべて理解したつもりでいた。今、私は完全にジレンマに陥っています。ぜひ、自分の言葉で説明してください。 fxsaber 2017.02.07 11:54 #17846 A100: 小さく描くこと。一見しただけで具体的専門家の中には、3つ以上の派生クラスは 有害であるとここに書いている人もいました。私はよく、3-4個の基本クラスを適切に初期化し、その後に本当のデリバティブを開始します。 プロが(私から見て)MQL5でどのように書いているのか、例を示してほしい。 TheXpert 2017.02.07 11:58 #17847 fxsaber:しかし、その場合、この例ではベースのデストラクタは呼ばれないはずです。 派生したデストラクタから暗黙のうちに呼び出されます。実はここが、単純な仮想関数と 違うところです。 fxsaber 2017.02.07 12:05 #17848 Комбинатор: 派生したデストラクタから暗黙のうちに呼び出されます。実はそこが単純な仮想関数と 違うところなんです。 ありがとうございます。仮想デストラクタは、オブジェクトが破壊されるときに呼び出される単なる仮想関数ではなく、もっとやっかいな存在であることがわかったのです。 TheXpert 2017.02.07 12:13 #17849 fxsaber: オブジェクトを削除する必要があります。 fxsaber 2017.02.07 12:33 #17850 Alexey Kozitsyn:SymbolInfoTick() が無関係なデータを返すエラー - tickのオーバーシュート。Build 1525 x64。インジケータからのテスト、Expert Advisorでのテストはしていません。リアル、オープニング、アクセスサーバーV。悲報!問題点に注目してください。また、申請番号1598238の 問題(10ページ目から、2017.01.26 09:43の投稿)にもです。開発者の皆さん、ダニを直しましょう!コードが提供され、それがここにある - 問題、何も探す必要はありません、ただ反応して、それを解決してください OnCalculateをOnTickに置き換えると、エラーは発生しません。問題はSymbolInfoTickにあるのではなく、インジケータがスキップしないように曲がった設定になっていることです。 1...177817791780178117821783178417851786178717881789179017911792...3185 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
デストラクタが何のためにあるかは知っている。なぜ、仮想という言葉を定義の前に書かなければならないのか、私にはよくわかりません。
C++ではデストラクタが異なるため、コードの互換性のために必要です。
デストラクタが何に使われるかは知っている。なぜ、定義の前にバーチャルという言葉を付けなければならないのか、理解できない。
仮想関数とデストラクタ >>
基本的なルールとして、クラス内に少なくとも1つの仮想関数がある場合は、デストラクタも仮想にする必要があります。デストラクタはデフォルトではvirtualではないので、明示的に宣言する必要があることを覚えておいてください。これをしないと、ほぼ間違いなくプログラムにメモリリークが発生します。この理由もまた、知性を必要としない。いくつかの例を見てみましょう。
了解です、ありがとうございます。MQL5への移植は多いのでしょうか?- 例が具体的なのはそのためですか?
仮想関数とデストラクタ >>
{
A * pA = new B;
delete pA;
return EXIT_SUCCESS;
}
このとき、オブジェクトは正常に構築されますが、破壊されるとき、派生クラスのデストラクタが呼ばれないため、メモリリークが発生します。
削除はベースクラスへのポインタを介して行われ、コンパイラはデストラクタを呼び出すためにアーリーバインディングを使用するからである。ベースクラスのデストラクタは、派生クラスのデストラクタについて何も知らないので、呼び出すことができません。そ の結果、派生クラス用に確保されたメモリの一部が回復不能な状態で失われる。これを避けるためには、ベースクラス内のデストラクタをvirtualに宣言 する必要があります。
ベースとなるデストラクタを仮想化することで、派生するデストラクタの情報が表示される理由がアーキテクチャ的に理解できない。
ベースが仮想の場合、派生デストラクタを定義することで、ベースのデストラクタを派生デストラクタに置き換えることになると理解しています。しかし、その場合、この例ではベースのデストラクタは呼ばれないはずです。
明らかに、この仕組みが理解できていない。MQL5で仮想関数に問題があったことはありません。私は彼らのおかげでOOPがたくさん好きになりました。すべて理解したつもりでいた。今、私は完全にジレンマに陥っています。ぜひ、自分の言葉で説明してください。
小さく描くこと。一見しただけで具体的専門家の中には、3つ以上の派生クラスは 有害であるとここに書いている人もいました。私はよく、3-4個の基本クラスを適切に初期化し、その後に本当のデリバティブを開始します。
しかし、その場合、この例ではベースのデストラクタは呼ばれないはずです。
派生したデストラクタから暗黙のうちに呼び出されます。実はそこが単純な仮想関数と 違うところなんです。
SymbolInfoTick() が無関係なデータを返すエラー - tickのオーバーシュート。Build 1525 x64。インジケータからのテスト、Expert Advisorでのテストはしていません。
リアル、オープニング、アクセスサーバーV。悲報!問題点に注目してください。また、申請番号1598238の 問題(10ページ目から、2017.01.26 09:43の投稿)にもです。
開発者の皆さん、ダニを直しましょう!コードが提供され、それがここにある - 問題、何も探す必要はありません、ただ反応して、それを解決してください