MQL5 コンパイラはクラスとそのポインタを区別しない - ページ 2 123456789...13 新しいコメント Dmitry Fedoseev 2019.01.10 05:08 #11 SemenTalonov:そんなコピーを期待していたのですが...。デフォルトのコピーコンストラクタはエラーにならない。 しかし、Dmitryは、新しいオブジェクトがメモリに割り当てられ、POINTER_AUTOMATIC 型のポインタが返されると言っています。 みんな自分なりにMQLのクセを理解している)ああ、父なるクリスマスは存在しないことがわかった。 メモリ内のオブジェクトについては書いていない。 さて、かつて参照とポインタの区別をどうするかで論争があった。しかし、今はオブジェクトとポインタの区別がつかないようです。 Georgiy Merts 2019.01.10 05:09 #12 Dmitry Fedoseev:オブジェクトのコピーはどこから来るのか?ポインターのコピーはそうだが、同じオブジェクトを指している。オブジェクトの配列があります。この配列の最初の要素で代入演算 子が呼ばれ、別途作成されたオブジェクトが渡される(ただし、演算子は未宣言)。その後の配列の最初の要素には何を入れるべきとお考えですか?私の意見としては、このオブジェクトは残すべきだと思います。 Georgiy Merts 2019.01.10 05:11 #13 SemenTalonov:私が言いたいのは、明示的にコピーコンストラクタを宣言しても、このテストでは何も変わらないということです。 どうしてそんな当たり前のことがわからないんだ...。 オブジェクト配列の項目に ポインタがあり、ポインタ配列の項目にオブジェクトがある...これは本当に正常なのでしょうか? 最初のケースでは、オブジェクトポインタが配列に移動し、2番目のケースでは、コピーコンストラクタが動作するはずですが、これらの操作がどのように同等になるのでしょうか?コピーコンストラクタではなく、代入演算子ですが、これはちょっとしたことです。 オブジェクト配列の要素に入るべきオブジェクトです。 最初のケースでは、まさにオブジェクトの配列がありますが、どのような「ポインタ」なのでしょうか? Dmitry Fedoseev 2019.01.10 05:12 #14 Georgiy Merts:オブジェクトの配列があります。この配列の最初の要素で代入演算 子が呼ばれ、別途作成されたオブジェクトが渡される。この配列の最初の項目には、その後に何を入れるべきだと思いますか?私の意見としては、このオブジェクトは残すべきだと思います。 А...そこは全然ダメです)))自動ポインタの配列で、その中に動的に作成されるオブジェクトも詰め込まれている。すると、3つのオブジェクトがあり、そのうち2つは自動的に削除され、1つは漏れることになります。コンパイルされている場合。 Dmitry Fedoseev 2019.01.10 05:15 #15 こんな感じでいいんじゃないでしょうか。 A* m_A[2]; というように。 m_A[0] =GetPointer(a); Dmitry Fedoseev 2019.01.10 05:16 #16 そして最後にはこうなる。 for(int i=0;i<2;i++)if(CheckPointer(m_A[i])==POINTER_DINAMIC)delete(m_A[i]); SemenTalonov 2019.01.10 05:19 #17 Dmitry Fedoseev:А...そこは全然ダメです)))自動ポインターの配列で、動的に作成されたオブジェクトも詰め込んでいる。やっとこさ!)) ゲオルギー・メルツオブジェクトの配列要素に配置する必要があるのは、このオブジェクト です。 最初のケースでは - あなたは正確にオブジェクトの配列を持っている、どのような "ポインタ"? それが私の言いたいことです。なぜ、WORKなのか! m_A[1] = new A(); Dmitry Fedoseev 2019.01.10 05:21 #18 SemenTalonov:やっとこさ!)) それが私の言いたいことだ!なぜ、WORKなのか! Aがそう宣言された場合。 A* m_A[2]; それならいいんです。 そして、このような場合。 A m_A[2]; コンパイルできないはずです。コンパイラにバグがあるのか、コンパイラがみんなのために考える必要がないのか、どちらかです。 Dmitry Fedoseev 2019.01.10 05:27 #19 バグではないでしょうが、単純なオブジェクトの割り当てはうまくいくはずなので、newで作成したオブジェクトを削除するなどの配慮が必要です。 SemenTalonov 2019.01.10 05:28 #20 Dmitry Fedoseev:そうすると、コンパイルできないはずです。コンパイラにバグがあるのか、コンパイラが皆のために考える必要がないのか、どちらかです。ビンゴ! SemenTalonov2019.01.10 07:36#3POINTER_AUTOMATIC 型のポインタをPOINTER_DYNAMIC 型のポインタに保存 すること、または その逆を許可して いるのです。 123456789...13 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
そんなコピーを期待していたのですが...。デフォルトのコピーコンストラクタはエラーにならない。
しかし、Dmitryは、新しいオブジェクトがメモリに割り当てられ、POINTER_AUTOMATIC 型のポインタが返されると言っています。
みんな自分なりにMQLのクセを理解している)
ああ、父なるクリスマスは存在しないことがわかった。
メモリ内のオブジェクトについては書いていない。
さて、かつて参照とポインタの区別をどうするかで論争があった。しかし、今はオブジェクトとポインタの区別がつかないようです。
オブジェクトのコピーはどこから来るのか?ポインターのコピーはそうだが、同じオブジェクトを指している。
オブジェクトの配列があります。この配列の最初の要素で代入演算 子が呼ばれ、別途作成されたオブジェクトが渡される(ただし、演算子は未宣言)。その後の配列の最初の要素には何を入れるべきとお考えですか?私の意見としては、このオブジェクトは残すべきだと思います。
私が言いたいのは、明示的にコピーコンストラクタを宣言しても、このテストでは何も変わらないということです。
どうしてそんな当たり前のことがわからないんだ...。
オブジェクト配列の項目に ポインタがあり、ポインタ配列の項目にオブジェクトがある...これは本当に正常なのでしょうか?
最初のケースでは、オブジェクトポインタが配列に移動し、2番目のケースでは、コピーコンストラクタが動作するはずですが、これらの操作がどのように同等になるのでしょうか?
コピーコンストラクタではなく、代入演算子ですが、これはちょっとしたことです。
オブジェクト配列の要素に入るべきオブジェクトです。
最初のケースでは、まさにオブジェクトの配列がありますが、どのような「ポインタ」なのでしょうか?
オブジェクトの配列があります。この配列の最初の要素で代入演算 子が呼ばれ、別途作成されたオブジェクトが渡される。この配列の最初の項目には、その後に何を入れるべきだと思いますか?私の意見としては、このオブジェクトは残すべきだと思います。
А...そこは全然ダメです)))自動ポインタの配列で、その中に動的に作成されるオブジェクトも詰め込まれている。すると、3つのオブジェクトがあり、そのうち2つは自動的に削除され、1つは漏れることになります。コンパイルされている場合。
こんな感じでいいんじゃないでしょうか。
A* m_A[2];
というように。
m_A[0] =GetPointer(a);
そして最後にはこうなる。
А...そこは全然ダメです)))自動ポインターの配列で、動的に作成されたオブジェクトも詰め込んでいる。
やっとこさ!))
オブジェクトの配列要素に配置する必要があるのは、このオブジェクト です。
最初のケースでは - あなたは正確にオブジェクトの配列を持っている、どのような "ポインタ"?
それが私の言いたいことです。なぜ、WORKなのか!
やっとこさ!))
それが私の言いたいことだ!なぜ、WORKなのか!
Aがそう宣言された場合。
A* m_A[2];
それならいいんです。
そして、このような場合。
A m_A[2];
コンパイルできないはずです。コンパイラにバグがあるのか、コンパイラがみんなのために考える必要がないのか、どちらかです。
そうすると、コンパイルできないはずです。コンパイラにバグがあるのか、コンパイラが皆のために考える必要がないのか、どちらかです。
ビンゴ!