MQL5で学び、共に書く - ページ 33 1...262728293031323334353637383940...46 新しいコメント TheXpert 2011.05.19 14:07 #321 初期化を初期化リストに移動する必要があります。宣言で初期化できるのは静的積分定数のみ(少なくともC++では、MQL5ではまだわかりません :) TheXpert 2011.05.19 14:08 #322 もう1つ、最後の質問です。文字列の""とNULLが等価でない理由は何ですか? Ilyas 2011.05.19 14:10 #323 Interesting:鳥といえば。 そして、これに対してコンパイラはどう答えるのだろうか。そして、次のように答えます。 '=' - 不正な代入の使用 コンパイラは屈しなかった-。 '=' - 不正な代入の使用。もし、プログラマー(この場合、私)が変数を 使う前に初期化 しなかった場合(コンパイラの要求通りにして、コンストラクタでこの瞬間を省略した場合)、どうなるのでしょうか?コンストラクタで構造体/クラスのメンバを初期化する正しい方法。//Struct StrMQL4_Deal struct StrMQL4_Deal { //----------------------------------------------------------------------------// double TP; double SL; //----------------------------------------------------------------------------// StrMQL4_Deal():TP(0),SL(0) { } StrMQL4_Deal(double tp,double sl):TP(tp),SL(sl) { } }; Ilyas 2011.05.19 14:13 #324 TheXpert: もう1つ、最後の質問です。文字列の""とNULLが等価でない理由は何ですか? NULLは文字列が未割り当てであることを意味し、""は文字列が割り当てられ、値を持つことを意味する。 削除済み 2011.05.19 14:19 #325 mql5:コンストラクタで構造体やクラスのメンバを 適切に初期化する。 はい、私は1年以上前にこのことに気づきました。少なくとも2010年からはそうしています。 TheXpert 2011.05.19 14:25 #326 Interesting: 少なくとも2010年以降は、その方法でやっています。初期化リストが導入されたのはごく最近のことなので、2010年以降に正しく実行することはできなかったはずです :) .mql5 です。NULLは文字列が未割り当てであることを意味し、""は文字列が割り当てられ、値を持つことを意味する。 なるほど、言い方を変えると。ユーザーに「配布していない」という文字列の状態を入力することに何の意味があるのでしょうか?何か有用な使い方ができるのか、それともただの松葉づえなのか。 --- 2011.05.19 14:28 #327 TheXpert: 初期化リストが導入されたのは最近なので、2010年からはうまくできなかったのでしょう :) . は、コンストラクタの中で意味します。 削除済み 2011.05.19 14:42 #328 TheXpert:初期化リストが導入されたのはごく最近のことなので、2010年からちゃんとできたわけではないはずです :) .クラスのコンストラクタと 宣言での初期化という意味です。//----------------------------------------------------------------------------// double TP; double SL; //----------------------------------------------------------------------------// 正確には覚えていませんが、2010年の初め(第1四半期、正確には言えません;そしてソースを探すのが面倒です)からオブジェクトを扱うようになりました。それ以前は、ライブラリを扱ったり、MQL5の基礎を勉強したり(というか、MQL5の移行問題を扱ったり)していました。 Yedelkin 2011.05.19 15:34 #329 Rosh: 配列の中の異なる種類のデータに対してオーバーロード関数を 実行する。 おっとっと、了解です。だから、普遍的な方法はないのです。というのも、オーバーロードの結果、同じ関数でもたった一つ(!)、関数のヘッダで配列の型を指定しなければならないからです。すっきりしないけど、しょうがない、このままにしておこう。リファレンスマニュアルのような出口があることを期待していた。 Yedelkin 2011.05.19 15:50 #330 次のような簡単なスクリプトで、奇妙な結果が得られます。void OnStart() { for(uchar u=120;u<136;u++) { switch(u>254) { case true: Print(u,">254 - true"); break; case false: Print(u,">254 - false"); break; } } } どなたか、その理由を説明してください。254番を明示的にucharに変換した場合、意図したとおりに動作する。 1...262728293031323334353637383940...46 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
初期化を初期化リストに移動する必要があります。
宣言で初期化できるのは静的積分定数のみ(少なくともC++では、MQL5ではまだわかりません :)
鳥といえば。
そして、これに対してコンパイラはどう答えるのだろうか。そして、次のように答えます。 '=' - 不正な代入の使用
コンパイラは屈しなかった-。 '=' - 不正な代入の使用。
もし、プログラマー(この場合、私)が変数を 使う前に初期化 しなかった場合(コンパイラの要求通りにして、コンストラクタでこの瞬間を省略した場合)、どうなるのでしょうか?
コンストラクタで構造体/クラスのメンバを初期化する正しい方法。
もう1つ、最後の質問です。文字列の""とNULLが等価でない理由は何ですか?
コンストラクタで構造体やクラスのメンバを 適切に初期化する。
少なくとも2010年以降は、その方法でやっています。
初期化リストが導入されたのはごく最近のことなので、2010年以降に正しく実行することはできなかったはずです :) .
NULLは文字列が未割り当てであることを意味し、""は文字列が割り当てられ、値を持つことを意味する。
初期化リストが導入されたのは最近なので、2010年からはうまくできなかったのでしょう :) .
初期化リストが導入されたのはごく最近のことなので、2010年からちゃんとできたわけではないはずです :) .
クラスのコンストラクタと 宣言での初期化という意味です。
正確には覚えていませんが、2010年の初め(第1四半期、正確には言えません;そしてソースを探すのが面倒です)からオブジェクトを扱うようになりました。それ以前は、ライブラリを扱ったり、MQL5の基礎を勉強したり(というか、MQL5の移行問題を扱ったり)していました。配列の中の異なる種類のデータに対してオーバーロード関数を 実行する。
次のような簡単なスクリプトで、奇妙な結果が得られます。
どなたか、その理由を説明してください。254番を明示的にucharに変換した場合、意図したとおりに動作する。