MQL5におけるOOPに関する質問 - ページ 84 1...777879808182838485868788899091...96 新しいコメント Igor Makanu 2020.06.15 19:35 #831 Pavel Verveyko: publicクラスのセクションで静的配列を 宣言し、コンストラクタでそれを初期化することは可能ですか?(以下同様) (あるいは要素ごとのみ?) よろしい それとも、結局のところ、静的な配列の初期 化を求めているのでしょうか? class A { public: static bool Mass[5]; A() { ArrayPrint(Mass); } }; static bool A::Mass[5] = { false, true, false, true, true }; //+------------------------------------------------------------------+ void OnStart() { A a; } //+------------------------------------------------------------------+ Dmitry Fedoseev 2020.06.15 19:39 #832 Pavel Verveyko: 静的配列を public class セクションで宣言し、コンストラクタで初期化することは可能ですか?(以下同様) (あるいは要素ごとのみ?) こんな感じです。class A{ protected: static int x[]; int my[]; public: A(){ ArrayCopy(my,x); } }; int A::x[]={1,2,3,4,5}; A a; 一般に、OOPの素晴らしさの背景には、このような貧しさがあることが印象的です。なぜ、変数や配列を宣言するときに、通常通り初期化できないのでしょうか?これから理論家たちが、私がバカであることを証明する理論をたくさん動かしてくれることは間違いないのですが、それにしても......。 Pavel Verveyko 2020.06.15 19:45 #833 Sergey Dzyublik:ローカル配列を初期化し、適切な配列フィールドにArrayCopyを実行することができます。 これも思いついたのですが、どのクラスの外でも同様にグローバルスコープに配置することができます。 さらに簡単なのですが、OOPにして欲しかったのです)) Pavel Verveyko 2020.06.15 19:50 #834 Dmitry Fedoseev:こんな感じです。 一般に、OOPの素晴らしさの背景には、このような貧しさがあることが印象的です。なぜ変数や配列を宣言するときに、通常通り初期化できない のでしょうか?もちろん、理論家は私がバカであることを証明するために、いろいろな理論を考え出すだろうが、それにしても......。 私もOOPで 書くたびに全く同じ考え))をしています。 Vladimir Simakov 2020.06.15 19:50 #835 Pavel Verveyko:これも思いつきで、どのクラスの外でもグローバルスコープに配置できるようにしました。 さらに簡単なのですが、OOPにして欲しかったのです)) class CTest{ public: int a[4]; CTest(){ static int _a[]={1,2,3,4}; ArrayCopy(a,_a); } }; Pavel Verveyko 2020.06.15 19:53 #836 Igor Makanu:よろしいそれとも、結局のところ、静的な配列の初期 化を求めているのでしょうか? は、「コンストラクタを持つメソッド」を呼んでいるのでしょうか? Igor Makanu 2020.06.15 19:56 #837 Pavel Verveyko: これは「コンストラクタ付きメソッド」呼び出しでしょうか?ノーというのが静的な初期化の方法です。の場合は、初期化する必要はありません。class A { public: static bool Mass[5]; A() { ArrayPrint(Mass); } }; static bool A::Mass[5]; //+------------------------------------------------------------------+ void OnStart() { A a; } //+------------------------------------------------------------------+はメソッド呼び出しではなく、クラスA::Mass[5]のフィールドのフルネームです。しかし、この行を削除 すると、コンパイラ・エラーが発生します - スタティックは、クラスのインスタンスが作成される前にメモリを確保する必要があります - これが、黄色の行が行うことです。 Pavel Verveyko 2020.06.15 20:00 #838 Igor Makanu:ノー静止画の初期化はこのように記述します。の場合は初期化する必要はなく、このようなコードになります。 ありがとうございます。この行(static bool A::Mass[5]; )は、どうやってもコンストラクタに転送できないことが判明しましたか? Igor Makanu 2020.06.15 20:03 #839 Pavel Verveyko:それとも、このような場合、静止画を初期化する唯一の方法なのでしょうか? 補記 はい、静力学は別に記述されるべきです。@fxsaber がそれを理解するのを助けてくれました。https://www.mql5.com/ru/forum/325418/page4#comment_16116740 MQL5でも静的クラスを初期化することができます。 パヴェル・ヴェルヴェイコ: つまり、この行(static bool A::Mass[5]; )は、コンストラクタに転送できないのでしょうか? クラスインスタンスの生成時ではなく、事前にメモリを確保する必要があります。 を、さらに通常の配列として使用することになります。 もし質問が一つの文字列の形での初期化についてなら、Sergeiのバージョンがあなたが求めているものであり、静的なものは必要ないだけです。 Pavel Verveyko 2020.06.15 20:07 #840 Igor Makanu:補記はい、静力学は別に記述されるべきです。@fxsaber がそれを理解するのを助けてくれました。https://www.mql5.com/ru/forum/325418/page4#comment_16116740を使えば、MQLでも静的クラスを初期化することができます。 ありがとうございます。今、試してみて、その方法で配列にアクセスすることが可能であることに気がつきました。 int OnInit() { ArrayPrint(A::Mass); return(INIT_SUCCEEDED); } 正直、OOPはあるのですが、Helpでは見たことがありません。 そういうニュアンスが書かれていないのが残念です。 回答してくださった皆さん、どうもありがとうござい ました! 1...777879808182838485868788899091...96 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
publicクラスのセクションで静的配列を 宣言し、コンストラクタでそれを初期化することは可能ですか?(以下同様) (あるいは要素ごとのみ?)
よろしい
それとも、結局のところ、静的な配列の初期 化を求めているのでしょうか?
静的配列を public class セクションで宣言し、コンストラクタで初期化することは可能ですか?(以下同様) (あるいは要素ごとのみ?)
こんな感じです。
一般に、OOPの素晴らしさの背景には、このような貧しさがあることが印象的です。なぜ、変数や配列を宣言するときに、通常通り初期化できないのでしょうか?これから理論家たちが、私がバカであることを証明する理論をたくさん動かしてくれることは間違いないのですが、それにしても......。ローカル配列を初期化し、適切な配列フィールドにArrayCopyを実行することができます。
これも思いついたのですが、どのクラスの外でも同様にグローバルスコープに配置することができます。
さらに簡単なのですが、OOPにして欲しかったのです))
こんな感じです。
一般に、OOPの素晴らしさの背景には、このような貧しさがあることが印象的です。なぜ変数や配列を宣言するときに、通常通り初期化できない のでしょうか?もちろん、理論家は私がバカであることを証明するために、いろいろな理論を考え出すだろうが、それにしても......。私もOOPで 書くたびに全く同じ考え))をしています。
これも思いつきで、どのクラスの外でもグローバルスコープに配置できるようにしました。
さらに簡単なのですが、OOPにして欲しかったのです))
よろしい
それとも、結局のところ、静的な配列の初期 化を求めているのでしょうか?
は、「コンストラクタを持つメソッド」を呼んでいるのでしょうか?
これは「コンストラクタ付きメソッド」呼び出しでしょうか?
ノー
というのが静的な初期化の方法です。
の場合は、初期化する必要はありません。
はメソッド呼び出しではなく、クラスA::Mass[5]のフィールドのフルネームです。
しかし、この行を削除 すると、コンパイラ・エラーが発生します - スタティックは、クラスのインスタンスが作成される前にメモリを確保する必要があります - これが、黄色の行が行うことです。ノー
静止画の初期化はこのように記述します。
の場合は初期化する必要はなく、このようなコードになります。
ありがとうございます。この行(static bool A::Mass[5]; )は、どうやってもコンストラクタに転送できないことが判明しましたか?
それとも、このような場合、静止画を初期化する唯一の方法なのでしょうか?
補記
はい、静力学は別に記述されるべきです。@fxsaber がそれを理解するのを助けてくれました。https://www.mql5.com/ru/forum/325418/page4#comment_16116740
MQL5でも静的クラスを初期化することができます。
つまり、この行(static bool A::Mass[5]; )は、コンストラクタに転送できないのでしょうか?
クラスインスタンスの生成時ではなく、事前にメモリを確保する必要があります。
を、さらに通常の配列として使用することになります。
もし質問が一つの文字列の形での初期化についてなら、Sergeiのバージョンがあなたが求めているものであり、静的なものは必要ないだけです。
補記
はい、静力学は別に記述されるべきです。@fxsaber がそれを理解するのを助けてくれました。https://www.mql5.com/ru/forum/325418/page4#comment_16116740
を使えば、MQLでも静的クラスを初期化することができます。
ありがとうございます。今、試してみて、その方法で配列にアクセスすることが可能であることに気がつきました。
正直、OOPはあるのですが、Helpでは見たことがありません。 そういうニュアンスが書かれていないのが残念です。
回答してくださった皆さん、どうもありがとうござい ました!