MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1098

 
Grigori.S.B:

以下のMQL4テストスクリプトのコードで、コンパイラが警告を発生させる理由を教えてください。

27行目でデータ型の不一致に関する警告が発生しました。どちらの変数も同じint型です。以下は、スクリプトをコンパイルした画面です。

27行目を以下のように置き換えると

という警告が表示されない。

その仕掛けとは?

トリックはありません。変数tはdoubleと 宣言されています

実はこのtは、どこにも意味を持ちません。

 
Alexey Viktorov:

そして、トリックはありません。変数tはdoubleと 宣言されています

ありがとうございました。

アレクセイ・ヴィクトロフ

実は、このtはどこにも価値を持ちません。

ソート時に結果を一時的に保存するためのバッファ変数です。

 

これらの初期化方法はどのように違うのでしょうか?

class Klas{};
Klas *Klas_
Klas Klas_
 
Seric29:
1. class Klas{};
2. Klas *Klas_
3. Klas Klas_

1. タイプ(クラス)説明

2. 型(クラス)ポインタの宣言

3. クラスインスタンスの宣言 - これは初期化で、Klas()コンストラクタが呼ばれるため、もし記述されていなければ、デフォルトコンストラクタが呼ばれます - ヘルプ

Seric29 です。

これらの初期化方法はどのように違うのでしょうか?

つまり、初期化のみステップ3。

 
Igor Makanu:

1. タイプ(クラス)説明

2. 型(クラス)ポインタの宣言

3. クラスインスタンスの宣言 - これは初期化であり、Klas()コンストラクタが記述されていない場合は、デフォルトコンストラクタが呼び出されるからです - ヘルプ

すなわち、第3項のみが初期化される。

ヘルプに初期化の方法が載っていないのですが、ヘルプではクラスの説明が乏しいので、見ただけで理解できていないのかもしれませんね~30回くらい読みましたよ。

はい、確かに私はエントリがないので、クラスの後に、彼らはOnStartにこのコードを入れている。

   CFoo foo1(TimeCurrent());     // явный вызов параметрического конструктора 
   CFoo foo2();                  // явный вызов параметрического конструктора с параметром по умолчанию 
   CFoo foo3=D'2009.09.09';      // неявный вызов параметрического конструктора 
   CFoo foo40(foo1);             // явный вызов конструктора копирования 
   CFoo foo41=foo1;              // неявный вызов конструктора копирования 
   CFoo foo5;                    // явный вызов конструктора по умолчанию (если конструктор по умолчанию отсутствует, 
                                 // то вызывается параметрический конструктор с параметром по умолчанию) 
//--- допустимые варианты получения указателей CFoo 
   CFoo *pfoo6=new CFoo();       // динамическое создание объекта и получение указателя на него 
   CFoo *pfoo7=new CFoo(TimeCurrent());// ещё один вариант динамического создания объекта 
   CFoo *pfoo8=GetPointer(foo1); // теперь pfoo8 указывает на объект foo1 

好きなように理解してください。なぜ、そのように説明しなければならないのかわからない。

CFoo *pfoo6=new CFoo();       // динамическое создание объекта и получение указателя на него

なぜこのポインタが必要なのか理解できない。

CFoo *pfoo7=new CFoo(TimeCurrent());// ещё один вариант динамического создания объекта 

そして、これは何のためかというと、あなたが望むこと、あなたが考えることです。

CFoo foo3=D'2009.09.09';      // неявный вызов параметрического конструктора

また、この意味がよくわからない。

CFoo foo40(foo1);             // явный вызов конструктора копирования 
これは何のためにあるのか、これもよくわからない。アップロードするのではなく、普通に、シンプルにアイデアを書き留めたのだろう。
 

ごあいさつ

mt4とmt5でグリッドの水平レベルがどのように計算されるか教えてください。

 
Seric29:

また、なぜポインタで初期化するのか、ヘルプに全く書かれていないのですが、多分、見て理解できなかったのだと思います。

ポインタはポインタ、初期化は初期化

は、まずこのコードを理解してください。

1. int a;
2. int a = 5;

このコードにおける初期化とは、変数宣言とは 何でしょうか?

メモリはいつ確保されるのですか?

というように、OOPやクラスへのポインタ、オブジェクトへのポインタなどの対象を、この知識で扱います。


消えろ、なぜか初歩的な質問には答えられない。

 
Igor Makanu:

ポインタはポインタ、初期化は初期化です。

は、まずこのコードを理解してください。

このコードの中で、初期化とは何か、変数宣言とは 何か?

メモリはいつ確保されるのですか?

を作成し、その知識を使って、OOPやクラスへのポインタ、オブジェクトへのポインタについて議論します。


は、なぜか初歩的な質問に答えられない。

ここで、簡単でわかりやすい例をご紹介します。1つ目は変数の宣言とメモリの確保(変数にはデフォルトのゴミみたいな任意の値やセクタ番号、C++ではアドレスが格納される)、2つ目は初期化です。

そして、このTypeのポインターは何のためにあるのか、何と一緒に食べればいいのかも、普通に説明されているはずです。

クラスへのポインタとオブジェクトへのポインタ

ネットで調べて見ます。

 
Andrey Sokolov:

ごあいさつ

mt4とmt5でグリッドの水平レベルを計算する方法は?

水平レベルを検出したい場合は、まず最大建値を決定し、何らかの値を追加して新しい価格を取得し、価格がこのレベル条件を破ったときに観察して新規注文を出すか、最大注文数を考慮して保留注文の グリッドを配置し、このグリッドを表示することが必要です。


一般に、コンパクトなコードの方が見やすく、自分のタスクに合わせて修正しやすい。


試したことがないのでわかりませんが、また、多くのプログラムを試したことがないので、シンプルなTSではかえって使いにくいと思うのですが、もしかしたら試したことがないのでしょうか。

 
Seric29:

ここで、簡単でわかりやすい例をご紹介します。1つ目は変数の宣言とメモリの確保(変数にはデフォルトのゴミのような任意の値やセクタ番号、C++ではアドレスが格納されますがここではわかりません)、2つ目は初期化のオプションです。

そして、なぜこのようなTypeへの指摘があるのか、何と一緒に食べればいいのかも、きちんと説明する必要がありました。

メモリ割り当てが 例1、例2になります

例2は宣言と初期化、例1は宣言のみ

クラスは、フィールド(プロパティ)とこれらのフィールドを操作するメソッドを含むユーザー定義の型です。

クラスへのポインタは宣言ですが、初期化がなく、型(クラス)に対するメモリ割り当てがありません。

pointer = new MyClass(); - これは宣言と初期化で、クラスの新しいインスタンスを作成し、このインスタンスはオブジェクトへのリンクとして返されます(正確にはリンクではありません、MQLではそれは...重要ではないので、混乱します)。

....

もし読みたくないなら、せめて私のこの投稿を参考にして、あなたの例を修正してください。

CFoo *pfoo6=new CFoo();

まで

CFoo *pfoo6;
pfoo6 = new CFoo();
CFoo *pfoo_7 =  pfoo6;

最後の行を...に割り当てるとどうなるかを理解しようとするが、それでも読む、ただフォーラムで尋ねるのは選択肢ではない

理由: