MQL5の未来はMQL5+、あるいはMQL6だ - ページ 11

 
Alexey Kozitsyn:

もう、いいじゃないですか。NULL定数を使用する。

秘密を教えてあげよう、もう実装されているんだ。マウスのホイールをクリックすると、十字のマークが表示されます。

ずっと前からできるんですね。ナビゲーターから、すでにインジケーターが装着されているウィンドウにインジケーターをドラッグします。

IMHOは、それが最も必要なことではないのです。

ナビゲーター、お気に入り、テンプレート、プロファイルがあります。すべてがセットアップ可能です。端末のヘルプを読めば、多くの発見がありますよ。

列挙は、コードを読みやすくするために、定数を削除し、人間が知っている実体に置き換えるために使用されます。

例えば、列挙型ENUM_DAY_OF_WEEKの値は、構造体MqlDateTimeの値day_of_weekと比較するために使用することができます。すなわち、次のように書くことができます。

あるいは、違う書き方を することもできます。

SUNDAYはint型の名前付き定数で、値は0です。

どうでしょう、コードを読む人に分かりやすくなるでしょうか。

カッコイイ!ナビゲーターありがとうございましたあまり気にしていなかった。普段はオフにしているので、あまり場所を取らない。チラッとでもいいからヘルプを、読ませていただきました。チャートのウィンドウ内で、間接をドラッグして重ねても何も教えてくれません。とはいえ、当てずっぽうでやっても良かったのですが......)))

列挙の本質を説明していただき、ありがとうございます早速読んでみると、MQLはC++から派生したものがほとんどで、そのドックもたくさんあります。しかし、Helpに誤植が多く、記事が不完全なのは良くない。

結果:正しく書かれたヘルプは、フォーラムでの馬鹿な質問を避けるのに役立つかもしれません。

NULLに関しては、ゼロですねー、よく使われるのは。しかし、変数の最大値というのは非常に稀で、ほとんどない。例えば、ある変数には、指標を分析した結果、BUY、SELL、NULLの3つの状態が格納される。POSITION_TYPE_BUY、POSITION_TYPE_SELLという 定数を使うと、どちらかが0になる。EMPTY_VALUEは全ての型に一般化すれば、NULLよりも普及すると思います)。

 
Alexander Puzanov:

もうひとつ、限りなく便利なアプリケーションがあります。例えば、こんな感じです。

そして、ユーザーは、あなたがそこに書いたコメントの中から、「買うだけ」「売るだけ」など、4つの項目を選択できるドロップダウンリストを取得します。ユーザー設定ウィンドウで、一連の指標、タイムフレーム、条件などをリストアップするのに非常に便利です。

はい、もちろんです。この場合、ユーザーが入力した値をプログラムでチェックする仕組みを簡略化できることも付け加えられます。つまり、初期状態ではすべて(正しい値)が記述されている。
 
agvozdezkiy:

NULLの部分は0であり、よく使われる。例えば、指標を分析した結果、BUY、SELL、NULLの3つの状態が変数に格納されます。POSITION_TYPE_BUY、POSITION_TYPE_SELLの レディ定数を使用すると、どちらかがNULLになります。

問題ありません、そのようにすればいいのです。

#define  VALUE_EMPTY -1       // Пустое значение для числовых типов данных
#define  STR_VALUE_EMPTY ""   // Пустое значение для строкового типа

そして、好きなところに置く。

 
Alexey Kozitsyn:

問題ありません、そのようにすればいいのです。

そして、好きなところに置いてください。

すべて理解できる。そういうことではありません。
 
agvozdezkiy:
すべてクリアしています。そういうことではありません。

では、どういう意味か説明してください。すべての定義済みデータ型に 対応する単一の定数?そのようなことが実施される可能性は低い。

 
Renat Fatkhullin:

残念ながら、このような警告の有用性と重要性を理解しているのは、経験豊富なプログラマーだけである。

まあ、皆さんもこの程度のコンパイラの助けは喜んで、自分でエラーを修正することをお勧めします。これらは実際に起こりうるエラーの場所であり、初心者の開発者にとってはまさに学ぶことが決定的に重要なのです。

ネームスペースは作れますか?その時も問題は解決しているはずです。
 

純粋にバーチャルな手法」というテーマは、数年前にすでにフォーラムで提起されていました。

つまり、C++の概念では、子孫に必ずオーバーライドされなければならないボディを持たない仮想メソッド。

virtual void Func1() = 0;

また、そのようなメソッドを含むクラスは自動的に抽象化される。コンパイラはこれも追跡する。(まあ、あくまで標準に忠実にということで、コンストラクタをprotectedスコープに隠してもいいんですけどね)。

現在、「純粋な仮想メソッド」の動作が不足しているのです。そのような機能がなければ、ライブラリやフレームワークを適切に用意して外注することはできません。自分自身の子クラスを作り(それはただ無用の長物ではなく、他のクラスの歯車のように組み込まれます)、親切にもインターフェイス全体を実装してくれるのです。今、継承して、メソッドの実装を入れないと、コンパイラはそれを飲み込んで、何も動かなくなります。親クラスのソースコードを掘り下げる?

インターフェイスの概念は、OOPの基礎の一つです。ですから、ぜひともMQL6ではなく、5で実装していただきたいものです

ちなみに、仮想関数に関するドキュメントでは、以下のようなエラーがあります。

Виртуальная функция, как и обычная функция, должна иметь исполняемое тело. При вызове семантика ее точно такая же, как и у остальных функций.

class Base {
private:
        int a;
public:
        virtual int Func1();
};


class Second: public Base {
public:
        int Func2() {
                return 0;
        };      
};

int OnInit() {

        Base* base = new Base();
        Second* foo = new Second();
   return(INIT_SUCCEEDED);
}

Func1 仮想関数は実行可能なボディを持たないが(値を返すこともない)、エラーなくコンパイルできる。

 
Igor Volodin:

純粋にバーチャルな手法」というテーマは、数年前にすでにフォーラムで提起されていました。

つまり、C++の概念では、ボディを持たない仮想メソッドは、子孫にオーバーライドされなければならない(MUST)。

また、そのようなメソッドを含むクラスは自動的に抽象化される。コンパイラはこれも追跡する。(まあ、標準に忠実なだけで、コンストラクタをprotectedスコープに隠してもいいんですけどね)。

現在、「純粋な仮想メソッド」の動作が不足しているのです。このような機能がなければ、ライブラリやフレームワークにアウトソースするための準備を適切に行うことができません。子クラスを作り(これは何もしないのではなく、他のクラスの歯車のように組み込まれます)、親切にもインターフェイス全体を実装してくださいます。今、継承して、メソッドの実装を入れないと、コンパイラはそれを飲み込んで、何も動かなくなります。親クラスのソースコードを掘り下げる?

インターフェイスの概念は、OOPの基礎の一つです。ですから、ぜひともMQL6ではなく、5で実装していただきたいものです

ちなみに、仮想関数に関するドキュメントでは、以下のようなエラーがあります。

Func1 仮想関数は実行可能なボディを持たないが(値を返すこともない)、エラーなくコンパイルできる。

1.純粋な仮想関数は近日中に追加予定

2.Func1の呼び出しは、この例のどこにあるのですか?ノーコール-ボディコントロールができない。

 
Slawa:

1.純粋な仮想関数は近日中に追加予定

2.例のFunc1コールはどこにあるのでしょうか?コールなし - ボディコントロールもなし。

VS 2015は以下のように言っています。

Severity Code Description Project File Line Suppression State.

Error LNK2001 unresolved externalsymbol"public: virtual int __thiscall Base::Func1(void)" (?Func1@Base@UAEHXZ) TestCPPCode C:\MyPAvForex Filterunk</TestCPPCode.obj 1.

Error LNK1120 1 unresolved externals TestCPPCode C:\MyPAvForex╱MQL4FilesForFormatting2015╱Debug╱TestCPPCode.exe 1

 
Alexey Volchanskiy:

VS 2015は以下のように言っています。

Severity Code Description Project File Line Suppression State.

Error LNK2001 unresolved external symbol "public: virtual int __thiscall Base::Func1(void)" (?Func1@Base@UAEHXZ) TestCPPCode C:\MyPAvForex Filterunk</TestCPPCode.obj 1.

Error LNK1120 1 unresolved externals TestCPPCode C:\MyPAvForex╱MQL4FilesForFormatting2015╱Debug╱TestCPPCode.exe 1

ソースコードを表示する