MQL5におけるOOPに関する質問 - ページ 5 123456789101112...96 新しいコメント Artyom Trishkin 2019.07.04 10:52 #41 このトピックに関係のないコメントは、「MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッション」に移動しました。 Dmitry Fedoseev 2019.07.04 11:00 #42 Vladimir Simakov: いつも使っているんだ。 どこで、どのように? 司会者、何度も質問してすみません。どうしても答えを出したいのです。 Vladimir Simakov 2019.07.04 11:12 #43 Artyom Trishkin: なぜ関数に渡された ポインタを 意図的に再割り当て するのでしょうか?もちろん、リークもあるでしょう。しかし、これは「古典的なリーク」ではなく、オブジェクトへのポインタを扱う際の古典的なエラーである。 ここでは新しいオブジェクトを作成する必要はなく、関数に渡されたポインタの外部オブジェクトを処理します。 これは私ではありません。このスレッドにある誰かのコードから引用しています。例として取り上げられています。 Vladimir Simakov 2019.07.04 11:15 #44 Dmitry Fedoseev: どこで、どのように? 司会者、何度も質問してすみません。どうしても答えを出したいのです。 我慢すること。帰ってから投稿します。 Roman 2019.07.04 11:33 #45 Dmitry Fedoseev: どこで、どのように? 司会者、何度も質問してすみません。どうしても答えを出したいのです。 質問を正しく理解すれば、newを使ってクラスをオブジェクトとして宣言します。 そして、作成したオブジェクト を通してクラスのパブリックメソッドを呼び出すポイントを使用します。 呼び出されたすべてのメソッドが実行された後、作成されたオブジェクトを削除することでメモリをクリアする delete。 Dmitry Fedoseev 2019.07.04 11:47 #46 Roman: もし私が質問を正しく理解していれば、newを使ってクラスをオブジェクトとして宣言しています。 そして、作成したオブジェクト を通じて、クラスのパブリックメソッドをドットで呼び出します。 呼び出されたすべてのメソッドが実行された後、作成されたオブジェクトを削除することでメモリをクリアする delete。 いや、そうではない。最初は、このように関数のパラメータ-オブジェクトだが参照ではない-かと思ったのですが、最後にセミコロンがありますね。宣言時に普通にオブジェクトを生成しているのであれば、なぜ括弧書きになっているのでしょうか?だから、今のところ、世紀の謎として残っているのです。 Vladimir Simakov 2019.07.04 12:24 #47 Dmitry Fedoseev: いや、そうではない。最初は、このように関数のパラメータ-オブジェクトだが参照ではない-かと思ったのですが、最後にセミコロンがありますね。宣言時に普通にオブジェクトを生成しているのであれば、なぜ括弧書きになっているのでしょうか?だから、今のところ、世紀の謎として残っているのです。 括弧内-本文の注釈であるため)))) Igor Makanu 2019.07.04 12:52 #48 Artyom Trishkin: また、なぜ関数に渡された ポインタを 意図的に再代入 したのでしょうか?もちろん、リークもあるでしょう。しかし、これは「古典的なリーク」ではなく、オブジェクトへのポインタを扱うという古典的なエラーなのです。 ここでは新しいオブジェクトを作成する必要はなく、関数に渡されたポインタの外部オブジェクトを処理します。 私の例のことではなく、MQLにおけるポインタそのものの実装のことです。もし、ポインタを参照解除する必要がなければ(そしてポインタはオブジェクトのインスタンスに割り当てることができる!)、ポインタを渡す代わりにオブジェクトへの参照を渡すことができるのであればhttps://www.mql5.com/ru/forum/1111/page2471#comment_11796665 ここでは、(CObj& obj)がいつどこで出現したかについての詳細な情報はありません(&はポインタのデリファレンス操作ではなく、ポインタの獲得 GetPointer() です)。 OK、情報を無駄にしたくないので...。MQLはC++ではない、そう実装されているのだ、そう自分に言い聞かせ、このフォーラムでもう一度繰り返します。 Dmitry Fedoseev 2019.07.04 13:08 #49 Igor Makanu: 私の例のことではなく、MQLにおけるポインタそのものの実装のことです。もし、ポインタを参照解除する必要がなければ(そしてポインタはオブジェクトのインスタンスに割り当てることができる!)、ポインタを渡す代わりにオブジェクトへの参照を渡すことができるのであればhttps://www.mql5.com/ru/forum/1111/page2471#comment_11796665 ここでは、(CObj& obj)がいつどこで出現したかについての詳細な情報はありません(&はポインタのデリファレンス操作ではなく、ポインタの獲得 GetPointer() です)。 OK、情報を無駄にしたくないので...。MQLはC++ではない、そう実装されているのだ、そう自分に言い聞かせ、このフォーラムでもう一度繰り返します。 大げさに言うと、複雑で混乱するようなことはないんですね。 Dmitry Fedoseev 2019.07.04 14:21 #50 Vladimir Simakov: 括弧は本文の注釈であるため)))) それでは、どうぞ。 こんな感じ。 void z(CObj * o){ } できるどころか、もっといい、こう呼べばいいんだから。 CObj obj; z(GetPointer(obj)); ポインタを参照渡しする場合、ポインタのために別の変数が必要になります。 *** また、関数内でオブジェクトを生成するためにポインタを渡す必要がある場合は、このようにします。 class CObj{ public: int f(){ return(33); } }; CObj * obj; void OnStart(){ z(obj); delete(obj); } void z(CObj & o){ o = new CObj(); } 以上、基本的にOOPについて知りたかったけど、怖くて聞けなかったことをまとめてみました))) 123456789101112...96 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
いつも使っているんだ。
どこで、どのように?
司会者、何度も質問してすみません。どうしても答えを出したいのです。
なぜ関数に渡された ポインタを 意図的に再割り当て するのでしょうか?もちろん、リークもあるでしょう。しかし、これは「古典的なリーク」ではなく、オブジェクトへのポインタを扱う際の古典的なエラーである。
ここでは新しいオブジェクトを作成する必要はなく、関数に渡されたポインタの外部オブジェクトを処理します。
どこで、どのように?
司会者、何度も質問してすみません。どうしても答えを出したいのです。
どこで、どのように?
司会者、何度も質問してすみません。どうしても答えを出したいのです。
質問を正しく理解すれば、newを使ってクラスをオブジェクトとして宣言します。
そして、作成したオブジェクト を通してクラスのパブリックメソッドを呼び出すポイントを使用します。
呼び出されたすべてのメソッドが実行された後、作成されたオブジェクトを削除することでメモリをクリアする delete。
もし私が質問を正しく理解していれば、newを使ってクラスをオブジェクトとして宣言しています。
そして、作成したオブジェクト を通じて、クラスのパブリックメソッドをドットで呼び出します。
呼び出されたすべてのメソッドが実行された後、作成されたオブジェクトを削除することでメモリをクリアする delete。
いや、そうではない。最初は、このように関数のパラメータ-オブジェクトだが参照ではない-かと思ったのですが、最後にセミコロンがありますね。宣言時に普通にオブジェクトを生成しているのであれば、なぜ括弧書きになっているのでしょうか?だから、今のところ、世紀の謎として残っているのです。
いや、そうではない。最初は、このように関数のパラメータ-オブジェクトだが参照ではない-かと思ったのですが、最後にセミコロンがありますね。宣言時に普通にオブジェクトを生成しているのであれば、なぜ括弧書きになっているのでしょうか?だから、今のところ、世紀の謎として残っているのです。
また、なぜ関数に渡された ポインタを 意図的に再代入 したのでしょうか?もちろん、リークもあるでしょう。しかし、これは「古典的なリーク」ではなく、オブジェクトへのポインタを扱うという古典的なエラーなのです。
ここでは新しいオブジェクトを作成する必要はなく、関数に渡されたポインタの外部オブジェクトを処理します。
私の例のことではなく、MQLにおけるポインタそのものの実装のことです。もし、ポインタを参照解除する必要がなければ(そしてポインタはオブジェクトのインスタンスに割り当てることができる!)、ポインタを渡す代わりにオブジェクトへの参照を渡すことができるのであればhttps://www.mql5.com/ru/forum/1111/page2471#comment_11796665
ここでは、(CObj& obj)がいつどこで出現したかについての詳細な情報はありません(&はポインタのデリファレンス操作ではなく、ポインタの獲得 GetPointer() です)。
OK、情報を無駄にしたくないので...。MQLはC++ではない、そう実装されているのだ、そう自分に言い聞かせ、このフォーラムでもう一度繰り返します。
私の例のことではなく、MQLにおけるポインタそのものの実装のことです。もし、ポインタを参照解除する必要がなければ(そしてポインタはオブジェクトのインスタンスに割り当てることができる!)、ポインタを渡す代わりにオブジェクトへの参照を渡すことができるのであればhttps://www.mql5.com/ru/forum/1111/page2471#comment_11796665
ここでは、(CObj& obj)がいつどこで出現したかについての詳細な情報はありません(&はポインタのデリファレンス操作ではなく、ポインタの獲得 GetPointer() です)。
OK、情報を無駄にしたくないので...。MQLはC++ではない、そう実装されているのだ、そう自分に言い聞かせ、このフォーラムでもう一度繰り返します。
大げさに言うと、複雑で混乱するようなことはないんですね。
括弧は本文の注釈であるため))))
それでは、どうぞ。
こんな感じ。
void z(CObj * o){ }
できるどころか、もっといい、こう呼べばいいんだから。
z(GetPointer(obj));
ポインタを参照渡しする場合、ポインタのために別の変数が必要になります。
***
また、関数内でオブジェクトを生成するためにポインタを渡す必要がある場合は、このようにします。
以上、基本的にOOPについて知りたかったけど、怖くて聞けなかったことをまとめてみました)))