MQL5におけるOOPに関する質問 - ページ 72 1...656667686970717273747576777879...96 新しいコメント Igor Makanu 2020.06.07 10:37 #711 MQL5のポインタについては、非常に「不特定多数が使うもの」であるため、誤解があります。 テストスクリプトで問題が発生しました(ライブラリを添付しています)。 このコードでポインタが削除されれば、すべてOKです。 #include <JSON\json.mqh> JSONObject * getJSONObject(const string json) { JSONParser parser; JSONValue* jv; JSONObject* jo = jv = ((JSONParser)(parser)).parse(json); if (jv != NULL && jv.isObject()) return(jo); Print(__FUNCSIG__ + "parser error, json = ",json); delete jv; return(NULL); } void OnStart() { JSONObject *jobj = getJSONObject("{\"ObjType\":2,\"m_period\":1}"); if(jobj!=NULL) Print("m_period = ", jobj.getInt("m_period")); delete jobj; } 最初はこう書きたかったんです。 #include <JSON\json.mqh> JSONObject * getJSONObject(const string json) { JSONValue *jv =((JSONParser *)(new JSONParser())).parse(json); if (jv != NULL && jv.isObject()) return((JSONObject *)jv); Print(__FUNCSIG__ + "parser error, json = ",json); delete jv; return(NULL); } void OnStart() { JSONObject *jobj = getJSONObject("{\"ObjType\":2,\"m_period\":1}"); if(jobj!=NULL) Print("m_period = ", jobj.getInt("m_period")); delete jobj; } スクリプトを実行すると、 1 object of type JSONParser left と表示されます。 このJSONParserを関数の外側で削除するにはどうすればよいのでしょうか? ファイル: Include.zip 12 kb Vladimir Simakov 2020.06.07 11:31 #712 Igor Makanu:MQL5のポインタについては、非常に「不特定多数が使うもの」であるため、誤解があります。テストスクリプトで問題が発生しました(ライブラリを添付しています)。このコードでポインタが削除されれば、すべてOKです。最初はこう書きたかったんです。スクリプトを実行すると、 1 object of type JSONParser left と表示されます。 このJSONParserを関数の外側で削除するにはどうすればよいのでしょうか? この場合、スタック上に一時的なオブジェクトを作成する必要があります)))CSomeObj(<params>).SomeMethod()を実行します。 Igor Makanu 2020.06.07 11:44 #713 Vladimir Simakov: この場合、スタック上に一時的なオブジェクトを作成する必要があります)) CSomeObj(<params>).SomeMethod()を実行します。 これは私の最初の例で、ローカルスコープにJSONParserを作成し、私が関数を終了するときに削除されます。 問題は、基本的に例の2番のようなものがシャープに飲み込まれるかどうかで、ここはまだ考える必要があるのですが......。一般的にシャープはプロスより簡潔です!!-だからチョリバーに!?))) Vladimir Simakov 2020.06.07 11:53 #714 Igor Makanu:これは私の最初の例で、ローカルスコープにJSONParserを作成し、私が関数を終了するときに削除されます。問題は、原則的には、例番号2シャープが飲み込むようなもので、ここではまだ考える必要があることです...一般的にシャープはプロスより簡潔です!!-だからチョリバーに!?))) ローカルエリアにオブジェクトへのポインタを作成しますが、オブジェクト自体はヒープにあり、それがリークするのです)。シャープじゃなくて、ゴミ収集車が行方不明))) Igor Makanu 2020.06.07 11:55 #715 Vladimir Simakov: ローカルエリアにオブジェクトへのポインタを作成し、オブジェクト自体はヒープにあり、リークするのはオブジェクトの方です)。 シャープじゃないんだから、ゴミ回収業者なんていないよ))) シャープのルールって言ったでしょ!?))) Nn、一般的に、私が使用し、脳を悩ますことはありません最初のオプション、参加ありがとうございました!。 Igor Makanu 2020.06.07 13:08 #716 このコードは何の問題もなく動作し、スクリプトの終了時に動的に作成されたオブジェクトをすべて削除します。 #include <JSON\json.mqh> //+------------------------------------------------------------------+ JSONObject *getJSONObject(const string json) { JSONParser *parser = new JSONParser(); JSONValue *jv = parser.parse(json); delete parser; if (jv != NULL && jv.isObject()) return((JSONObject *)jv); Print(__FUNCSIG__ + "parser error, json = ", json); delete jv; return(NULL); } //+------------------------------------------------------------------+ void OnStart() { JSONObject *jobj = getJSONObject("{\"ObjType\":2,\"m_period\":1}"); if(jobj != NULL) Print("m_period = ", jobj.getInt("m_period")); delete jobj; } JSONParser *parserオブジェクトを削除 したので、関連するすべてのポインタをNULLとして取得する必要があります。 Maxim Kuznetsov 2020.06.07 13:13 #717 Igor Makanu:このコードは何の問題もなく動作し、スクリプトの終了時に動的に作成されたオブジェクトをすべて削除します。JSONParser *parserオブジェクトを削除 したので、関連するすべてのポインタをNULLとして取得する必要があります。 なぜ 繰り返しになりますが、これはシャープではありません。"リンク先の参考文献 "なんてものはありません......。オブジェクトは、プログラマが個人的に殺すまで、参照に関係なく生きています。 Igor Makanu 2020.06.07 13:19 #718 Maxim Kuznetsov:なぜそんなことを?またシャープじゃないんだから、「リンク先の参考文献」なんてものはないだろう...。オブジェクトは、プログラマが個人的に殺すまで、参照に関係なく生きています。 まあ、それが問題なのですが、実行可能なコードのバリエーションはありますが、ポインタの動作が私には不明です 理論的には、最初のメッセージにあったバリアント 2 が動作するはずです。 Sergey Dzyublik 2020.06.07 13:54 #719 実際には1+1も組めないのに「高い」という議論になるユーザーも滑稽です。 ダニング・クルーガー効果はどこかに刺さってるんでしょうかね? awsomdino2 2020.06.07 13:58 #720 なんて生意気なんでしょう。 高いものばかりなのに、知識割引がある、私は割引がない。 1...656667686970717273747576777879...96 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
MQL5のポインタについては、非常に「不特定多数が使うもの」であるため、誤解があります。
テストスクリプトで問題が発生しました(ライブラリを添付しています)。
このコードでポインタが削除されれば、すべてOKです。
最初はこう書きたかったんです。
スクリプトを実行すると、 1 object of type JSONParser left と表示されます。
このJSONParserを関数の外側で削除するにはどうすればよいのでしょうか?
MQL5のポインタについては、非常に「不特定多数が使うもの」であるため、誤解があります。
テストスクリプトで問題が発生しました(ライブラリを添付しています)。
このコードでポインタが削除されれば、すべてOKです。
最初はこう書きたかったんです。
スクリプトを実行すると、 1 object of type JSONParser left と表示されます。
このJSONParserを関数の外側で削除するにはどうすればよいのでしょうか?
この場合、スタック上に一時的なオブジェクトを作成する必要があります))
これは私の最初の例で、ローカルスコープにJSONParserを作成し、私が関数を終了するときに削除されます。
問題は、基本的に例の2番のようなものがシャープに飲み込まれるかどうかで、ここはまだ考える必要があるのですが......。一般的にシャープはプロスより簡潔です!!-だからチョリバーに!?)))
これは私の最初の例で、ローカルスコープにJSONParserを作成し、私が関数を終了するときに削除されます。
問題は、原則的には、例番号2シャープが飲み込むようなもので、ここではまだ考える必要があることです...一般的にシャープはプロスより簡潔です!!-だからチョリバーに!?)))
ローカルエリアにオブジェクトへのポインタを作成し、オブジェクト自体はヒープにあり、リークするのはオブジェクトの方です)。
シャープのルールって言ったでしょ!?)))
Nn、一般的に、私が使用し、脳を悩ますことはありません最初のオプション、参加ありがとうございました!。
このコードは何の問題もなく動作し、スクリプトの終了時に動的に作成されたオブジェクトをすべて削除します。
JSONParser *parserオブジェクトを削除 したので、関連するすべてのポインタをNULLとして取得する必要があります。
このコードは何の問題もなく動作し、スクリプトの終了時に動的に作成されたオブジェクトをすべて削除します。
JSONParser *parserオブジェクトを削除 したので、関連するすべてのポインタをNULLとして取得する必要があります。
なぜ
繰り返しになりますが、これはシャープではありません。"リンク先の参考文献 "なんてものはありません......。オブジェクトは、プログラマが個人的に殺すまで、参照に関係なく生きています。
なぜそんなことを?
またシャープじゃないんだから、「リンク先の参考文献」なんてものはないだろう...。オブジェクトは、プログラマが個人的に殺すまで、参照に関係なく生きています。
まあ、それが問題なのですが、実行可能なコードのバリエーションはありますが、ポインタの動作が私には不明です
理論的には、最初のメッセージにあったバリアント 2 が動作するはずです。
ダニング・クルーガー効果はどこかに刺さってるんでしょうかね?
なんて生意気なんでしょう。
高いものばかりなのに、知識割引がある、私は割引がない。