mql5言語の特徴、微妙なニュアンスとテクニック - ページ 193

 
fxsaber:

絶対にすべてのルールは人為的なものです。

私もそう思います。問題は、アートのレベルです :)

 

アドバイスお願いします - 多くの(例えば50)パラメータを持つカスタムインディケータを 使用する場合、インディケータのパラメータを管理する最良の方法は何でしょうか?(インディケータのパラメータをエキスパートペアに直接転送することを除けば、全てはこちらで解決します)

iCustomを呼び出す際に*.setファイルを読み込むという使い方は他の方のコードにありましたが、そのようなものは見当たらず、テストでもうまくいかないようです。

もしかしたら、誰かが知っていて、文書化されていないトリックがあるのかも?

 

最新のリリースビルドは2650です。このようなスクリプトは、コンパイルできなくても大丈夫です。

struct A_INFO
{
  int a;
};

bool operator<(const A_INFO &First,const A_INFO &Second) //operator< has invalid parameters count
{
  return First.a<Second.a;
}

void OnStart()
{
}

そして、これが普通なのです。

struct A_INFO
{
  int a;
};

bool operator<(const A_INFO &First)
{
  return true;
}

void OnStart()
{
}

1つの値を比較することを想定しているのでしょうか?あるいは、なぜオペレーターを非会員機構に できないのか。

 
そして、2つ目のフォローアップの質問です。なぜArraySortは このような構造体の配列に適用できないのでしょうか?定義されている<演算子を使って比較することを妨げるものは何ですか?
 
traveller00:

1つの値を比較することを期待しているのですか?

2番目の値(演算子の左側の値)はこれです。

 
fxsaber:

2つ目の値(演算子の左側の値)はこれです。

演算子を構造 体のメンバーにせず、グローバルにした場合、なぜこのようなことが起こるのでしょうか?それともグローバルにできないのでしょうか?C++は挙動が異なる。

 
traveller00:

組織の一員として ではなく、グローバルに発言したのに、なぜこのようなことになるのか。それとも、グローバルではできないのでしょうか?C++は挙動が異なる。

私はそのようなオペレーターのことは何も知りません。

 
traveller00:
そして、2つ目の質問は、フォローアップについてです。このような構造体の配列に対して、なぜArraySortを適用できないのでしょうか?定義されている演算子 < を通して比較することを妨げるものは何でしょうか?

組み込みのArraySortは単なる関数で、すべての標準的な型に対してオーバーロードされています。

クラスなどのOOPは助かります。も し、すべての型(構造体)が共通の祖先 SBではCObject)を持つなどしていたら......。

 
Aleksey Mavrin:

組み込みのArraySortは単なる関数で、すべての標準的な型に対してオーバーロードされています。

クラスなどのOOPは助かります。も し、すべての型(構造体)が共通の祖先(SBではCObject)を持つなどしていたら......。

そうですね、内部がどうなっているのか、おおよその見当はついています。その質問は、むしろ答えのためにあるのではなかった。しかし、提案として、STLなどの他の実装のバリエーションに注意を払い、ソーターを含む普遍的なものを書くことができる、同様の方法でコンテナを処理することができます。

 
traveller00:

中身はどうなっているのか、おおよその見当はついています。質問は、答えのためではなかった。しかし、提案としては、例えばSTLのような他の実装のバリエーションに注意を払い、ソーターを含む普遍的なものを書くことができるコンテナーで同様の作業をすることです。

間違いなくSTL)ArraySortは テンプレートベースにして使うことでオーバーロードが可能ですが、私はテンプレートの専門家ではなく、単純なクラス階層を扱うのに慣れています。

理由: