MQL5におけるOOPに関する質問 - ページ 36 1...293031323334353637383940414243...96 新しいコメント fxsaber 2019.09.12 11:35 #351 Igor Makanu: そうですね、その方が良い解決策です!そうすれば、メソッドが1つ減りますから。 OnStartのnewは1つしかないはずです。 Igor Makanu 2019.09.13 12:10 #352 Koldun Zloy: 1.この関数を2回呼んでも何も問題はありません。 2.静的関数を使うことに反対している人たちが、微塵も反論しないのは気にならないのでしょうか? 誰でもいいからビデオを見るのではなく、本を読んだ方がいい。 私は ビデオの著者https://youtu.be/lfdAwl3-X_c とhttps://youtu.be/zME4SOCHT0I 多くの良いことを望む...... 今週全体をノックアウトし、私が行うために座っているすべては、私は以前のようにやっていない、考え始める... ...スタティックは使えません。 コードを完成させたいのですが、質問があります。 - オブジェクトのフィールドを保存したいのですが、良いことに、フィールドはすぐに構造体に配置され、FileWriteStruct()を介してワンクリックで保存することができます。 - 一つのクラスからN個のオブジェクトがあり、それらはすべて一つのベースクラスから継承される。 - ビデオで見たので、ファイルを保存する必要がある場合、各オブジェクトに問い合わせる必要がない方法があればと思ったのですが......。一般的に、大失敗は、愚かなことをしないことに決定し、ファイルに書き込むためのフラグを静的に割り当てるメソッドを作成することになりました class CStrategy: public IStrategy { protected: static bool f_save_required; void SetSaveRequired() { CStrategy::f_save_required = true; } public: bool GetSaveRequired() { return(CStrategy::f_save_required); } 計画通りに動作する そして、こう書いたらどうなるんだろうという疑問そのもの。 class CStrategy: public IStrategy { private: static bool f_save_required; protected: void SetSaveRequired() { CStrategy::f_save_required = true; } public: bool GetSaveRequired() { return(CStrategy::f_save_required); } このように書くと、どうなるか。 class CStrategy: public IStrategy { private: static bool f_save_required; protected: void SetSaveRequired() { f_save_required = true; } public: bool GetSaveRequired() { return(f_save_required); } Igor Makanu 2019.09.13 12:14 #353 テストスクリプトを変更するために別の方法を試してみましたが、私は違いを見ることができません、私は上記の投稿に正しい修飾子を示して ください:(保護/プライベート)とM::xまたは単にxを呼び出す //+------------------------------------------------------------------+ interface I { bool main(); }; //+------------------------------------------------------------------+ class M:public I { protected: static int x; bool main() { x++; Print(__FUNCTION__," = ",x); return(x>0); } public: M() { Print(__FUNCTION__);} ~M() { Print(__FUNCTION__);} }; //+------------------------------------------------------------------+ static int M::x=0; //+------------------------------------------------------------------+ class A:public M { public: A() { Print(__FUNCTION__);} ~A() { Print(__FUNCTION__);} }; //+------------------------------------------------------------------+ class B:public M { public: B() { Print(__FUNCTION__);} ~B() { Print(__FUNCTION__);} }; //+------------------------------------------------------------------+ class C:public M { public: C() { Print(__FUNCTION__);} ~C() { Print(__FUNCTION__);} }; //+------------------------------------------------------------------+ void OnStart() { I *a = new A; I *b = new B; I *c = new C; I *m = new M; a.main(); b.main(); c.main(); m.main(); delete a; delete b; delete c; delete m; } //+------------------------------------------------------------------+ Vladimir Simakov 2019.09.13 12:28 #354 Igor Makanu:テストスクリプトを変更するために別の方法を試してみましたが、私は違いを見ることができません、私は上記の投稿に正しい修飾子を示して ください:(保護/プライベート)とM::xまたは単にxを呼び出す protectedの場合、フィールドが定義されているクラスのメソッドでのみ参照が可能ですが、ここではロジックは共通です。 Vladimir Simakov 2019.09.13 12:39 #355 ところで、ハッピーホリデー。またバイトが発生しました。 Igor Makanu 2019.09.13 12:41 #356 Vladimir Simakov:クラスメソッドの 内部ではxを呼び出し、他のすべての場所ではM::x、もしprotectedなら、フィールドが定義されているクラスのメソッドでのみアクセスが可能です、ここではロジックは共通です。 そうなんです!寝起きで間違った例を作ってしまったので、'M::main' - cannot access private member function.と出てしまいました。 class M { private: static int x; bool main() { x++; Print(__FUNCTION__," = ",x); return(x>0); } public: M() { Print(__FUNCTION__);} ~M() { Print(__FUNCTION__);} }; //+------------------------------------------------------------------+ static int M::x=0; //+------------------------------------------------------------------+ class A:public M { public: A() { Print(__FUNCTION__);} ~A() { Print(__FUNCTION__);} void inc() {main();} }; //+------------------------------------------------------------------+ class B:public M { public: B() { Print(__FUNCTION__);} ~B() { Print(__FUNCTION__);} void inc() {main();} }; //+------------------------------------------------------------------+ class C:public M { public: C() { Print(__FUNCTION__);} ~C() { Print(__FUNCTION__);} void inc() {main();} }; //+------------------------------------------------------------------+ void OnStart() { A *a = new A; B *b = new B; C *c = new C; M *m = new M; a.inc(); delete a; delete b; delete c; delete m; } //+------------------------------------------------------------------+ got 'M::main' - cannot access private member function tst.mq5 25 32 書き出すと protected: bool main() { x++; Print(__FUNCTION__," = ",x); return(x>0); } すべて計画通りに動いています Igor Makanu 2019.09.13 12:42 #357 Vladimir Simakov: ところで、ハッピーホリデー。 またバイトが起きた。 ありがとうございます!解決しました。 Happy Holidays! Koldun Zloy 2019.09.13 15:53 #358 Igor Makanu: 私は ビデオの著者https://youtu.be/lfdAwl3-X_c とhttps://youtu.be/zME4SOCHT0I 多くの良いことを望む...... 今週ずっとノックアウト、私が行うために座っているすべては、私はむしろ以前のように行うよりも考え始める... ...スタティックは使えません。 コードを完成させたいのですが、質問があります。 - オブジェクトのフィールドを保存したいのですが、良いことに、フィールドはすぐに構造体に配置され、FileWriteStruct()を介してワンクリックで保存することができます。 - 一つのクラスからN個のオブジェクトがあり、それらはすべて一つのベースクラスから継承される。 - ビデオで見たので、ファイルを保存する必要がある場合、各オブジェクトに問い合わせる必要がない方法があればと思ったのですが......。一般的に、大失敗は、愚かなことをしないことに決定し、ファイルに書き込むためのフラグを静的に割り当てるメソッドを作成することになりました 計画通りに動作する そして、こう書いたらどうなるんだろうという疑問そのもの。 このように書くとどうなるか。 オブジェクトをファイルに保存する必要があるかどうかは、何に依存するのでしょうか? このフラグはすべてのオブジェクトで共通なのでしょうか? Igor Makanu 2019.09.13 16:10 #359 Koldun Zloy: オブジェクトをファイルに保存するには、何に依存するのでしょうか? これは、すべてのオブジェクトに共通する機能なのでしょうか? もちろん、問題は弁証法的である。 - 10個のストラテジーを用意し、TCの状態を変えながら10個のファイルを書くとよい(1個のTC=1個の構造体)。 - または、クラスから1つのハンドルを渡す方が論理的で、1ティックごとにストラテジーの呼び出し(検索)があり、1つのファイルに書き込まれます。 2番目のバリエーションがより論理的だと思います すべてのTCの開始後、10個の構造体を一度書き込む必要があることが判明した - 状態が変化している この場合、ファイルを開いて 一度に10個の構造を書き込む方が速い。戦略はピップスワイズではなく、毎秒でもなく、各TSで1分から1時間程度である。 これまでのところ、スタティック変数の記述と、get - set, set protected, get publicによるアクセスを実装しています - また、呼び出し後にスタティック変数をfalseにリセットしています。 Koldun Zloy 2019.09.13 16:18 #360 Igor Makanu: まあ、問題は弁証法的である、もちろん、ここで - 10個のストラテジーを持ち、TCの状態を変化させて10個のファイルを書く(1個のTC=1個の構造体)。 - または、クラスから1つのハンドルを渡す方が論理的で、そこではティック上でストラテジーの呼び出し(検索)が行われるため、1つのファイルにすべてを書き出します。 2番目のバリエーションがより論理的だと思います すべてのTCの開始後、10個の構造体を一度書き込む必要があることが判明した - 状態が変化している この場合、ファイルを開いて 一度に10個の構造を書き込む方が速い。戦略はピップスワイズではなく、毎秒でもなく、各TSで1分から1時間程度である。 今のところ、静的変数へのアクセスは、get - set、set protected、get publicで行うように記述しています。 これですべてクリアです。SetSaveRequired()とGetSaveRequired()が非スタティックでありながら、スタティック変数に書き込む 理由は不明です。 1...293031323334353637383940414243...96 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
そうですね、その方が良い解決策です!そうすれば、メソッドが1つ減りますから。
1.この関数を2回呼んでも何も問題はありません。
2.静的関数を使うことに反対している人たちが、微塵も反論しないのは気にならないのでしょうか?
誰でもいいからビデオを見るのではなく、本を読んだ方がいい。
私は ビデオの著者https://youtu.be/lfdAwl3-X_c とhttps://youtu.be/zME4SOCHT0I 多くの良いことを望む...... 今週全体をノックアウトし、私が行うために座っているすべては、私は以前のようにやっていない、考え始める... ...スタティックは使えません。
コードを完成させたいのですが、質問があります。
- オブジェクトのフィールドを保存したいのですが、良いことに、フィールドはすぐに構造体に配置され、FileWriteStruct()を介してワンクリックで保存することができます。
- 一つのクラスからN個のオブジェクトがあり、それらはすべて一つのベースクラスから継承される。
- ビデオで見たので、ファイルを保存する必要がある場合、各オブジェクトに問い合わせる必要がない方法があればと思ったのですが......。一般的に、大失敗は、愚かなことをしないことに決定し、ファイルに書き込むためのフラグを静的に割り当てるメソッドを作成することになりました
計画通りに動作する
そして、こう書いたらどうなるんだろうという疑問そのもの。
このように書くと、どうなるか。
テストスクリプトを変更するために別の方法を試してみましたが、私は違いを見ることができません、私は上記の投稿に正しい修飾子を示して ください:(保護/プライベート)とM::xまたは単にxを呼び出す
テストスクリプトを変更するために別の方法を試してみましたが、私は違いを見ることができません、私は上記の投稿に正しい修飾子を示して ください:(保護/プライベート)とM::xまたは単にxを呼び出す
クラスメソッドの 内部ではxを呼び出し、他のすべての場所ではM::x、もしprotectedなら、フィールドが定義されているクラスのメソッドでのみアクセスが可能です、ここではロジックは共通です。
そうなんです!寝起きで間違った例を作ってしまったので、'M::main' - cannot access private member function.と出てしまいました。
got 'M::main' - cannot access private member function tst.mq5 25 32
書き出すと
すべて計画通りに動いています
ところで、ハッピーホリデー。 またバイトが起きた。
ありがとうございます!解決しました。
Happy Holidays!
私は ビデオの著者https://youtu.be/lfdAwl3-X_c とhttps://youtu.be/zME4SOCHT0I 多くの良いことを望む...... 今週ずっとノックアウト、私が行うために座っているすべては、私はむしろ以前のように行うよりも考え始める... ...スタティックは使えません。
コードを完成させたいのですが、質問があります。
- オブジェクトのフィールドを保存したいのですが、良いことに、フィールドはすぐに構造体に配置され、FileWriteStruct()を介してワンクリックで保存することができます。
- 一つのクラスからN個のオブジェクトがあり、それらはすべて一つのベースクラスから継承される。
- ビデオで見たので、ファイルを保存する必要がある場合、各オブジェクトに問い合わせる必要がない方法があればと思ったのですが......。一般的に、大失敗は、愚かなことをしないことに決定し、ファイルに書き込むためのフラグを静的に割り当てるメソッドを作成することになりました
計画通りに動作する
そして、こう書いたらどうなるんだろうという疑問そのもの。
このように書くとどうなるか。
オブジェクトをファイルに保存する必要があるかどうかは、何に依存するのでしょうか?
このフラグはすべてのオブジェクトで共通なのでしょうか?
オブジェクトをファイルに保存するには、何に依存するのでしょうか?
これは、すべてのオブジェクトに共通する機能なのでしょうか?
もちろん、問題は弁証法的である。
- 10個のストラテジーを用意し、TCの状態を変えながら10個のファイルを書くとよい(1個のTC=1個の構造体)。
- または、クラスから1つのハンドルを渡す方が論理的で、1ティックごとにストラテジーの呼び出し(検索)があり、1つのファイルに書き込まれます。
2番目のバリエーションがより論理的だと思います
すべてのTCの開始後、10個の構造体を一度書き込む必要があることが判明した - 状態が変化している
この場合、ファイルを開いて 一度に10個の構造を書き込む方が速い。戦略はピップスワイズではなく、毎秒でもなく、各TSで1分から1時間程度である。
これまでのところ、スタティック変数の記述と、get - set, set protected, get publicによるアクセスを実装しています - また、呼び出し後にスタティック変数をfalseにリセットしています。
まあ、問題は弁証法的である、もちろん、ここで
- 10個のストラテジーを持ち、TCの状態を変化させて10個のファイルを書く(1個のTC=1個の構造体)。
- または、クラスから1つのハンドルを渡す方が論理的で、そこではティック上でストラテジーの呼び出し(検索)が行われるため、1つのファイルにすべてを書き出します。
2番目のバリエーションがより論理的だと思います
すべてのTCの開始後、10個の構造体を一度書き込む必要があることが判明した - 状態が変化している
この場合、ファイルを開いて 一度に10個の構造を書き込む方が速い。戦略はピップスワイズではなく、毎秒でもなく、各TSで1分から1時間程度である。
今のところ、静的変数へのアクセスは、get - set、set protected、get publicで行うように記述しています。
これですべてクリアです。SetSaveRequired()とGetSaveRequired()が非スタティックでありながら、スタティック変数に書き込む 理由は不明です。