エラー、バグ、質問 - ページ 2416

 
Andrey Pogoreltsev:

ここでは、曖昧さは必要ありません。単にオーバーロードされたメソッドが適用される順番であるべきです。つまり、オーバーロードの解決策の課題は、ジレンマを作り出すことではなく、最適な方法を選択することなのです。アクセス修飾子を 無視した場合、テーブルから最初のメソッドが取られるか、コンパイラの実装に依存するが、曖昧さはない。

ここで、例えば入力パラメータが異なる2つのメソッドがあった場合、どうなるでしょうか。

C++に戻ると、同じベクターが1つ持っています。

だから、これは絶対に正常な状態なんです。

小学校という非常にシンプルな例を挙げていただきました。元の例とは関係ないようです。


アレクセイ・ナヴォイコフ

この例では、定数でないオブジェクトのメソッドなので、他のすべての条件が同じであれば、呼び出されなければなりません。

このルールは知りませんでした、ありがとうございます。

キャスティングを削除して、両方のメソッドの引数をint型に すると、コードは正常にコンパイルされます。 つまり、MQLのハングアップの原因はキャスティングです。 このキャスティングは、コードが同一であるため、影響しないはずです。

原因は、コンパイラがオーバーロードされたメソッドのキャストが同一であるかどうかをチェックしないことにあるようです。

 

一般に、この問題(およびMQLの他の多くの問題)を解決するには、メソッドの1つを補助クラスに移動させる必要があります。

class A { };

class _B
{
 protected: 
  A _a[];
 public:        
  const A * operator[](uint i) const { return &_a[i]; }  
};

class B : public _B
{
 public: 
  A * operator[](uint i)       { return &_a[i]; }
};
 
fxsaber:

小学校という非常にシンプルな例を挙げていただきました。元の例とは関係なさそうですね。

C++の規格を読めば、上に引用したのと同じルールですべて解決していることがわかるはずです。
 
Slava:

そもそも、最適化キャッシュでは、MT5、MT4ともに文字列パラメータは常に63文字に切り捨てられていました。

イベント送信の場合、63文字以上の文字列は送信できません。

だから、外から来るものは限られている

エンドユーザー向け製品に関しては。ベンダーは制限を考慮しなければならない。もし、それがわからなければ、売る前に十分なテストをしていないことになります。

昔と今がどうこうではなく、時代に合わせ、より良い方向に変化していくためには、どうあるべきかということです。

 

EAをテスト する際、パラメータを設定してスタートボタンを押すと、EAの設定がデフォルトにリセットされてしまうという問題が発生したのですが、何が問題なのでしょうか?

ビデオでは、その一例をご紹介しています。

 
Dmitry Melnichenko:

EAをテスト する際、パラメータを設定してスタートボタンを押すと、EAの設定がデフォルトにリセットされてしまうという問題が発生したのですが、何が問題なのでしょうか?

動画例

テスターで「設定」タブに移動した後、MT5がデフォルトにリセットされる

1の投稿をご覧ください。

 

隣のスレッドで質問したのですが、あまりそちらを見る人がいないようです。ここに重複して記載します。

https://www.mql5.com/ru/forum/6343/page1020#comment_11112212

要するに、先物では(テスターでは)取引は(SL/TPによって)開かれ、閉じられるが、常に利益はゼロである。テスターのバグということもあるのでしょうか?それとも何らかの仕掛けが必要なのでしょうか?

Вопросы от начинающих MQL5 MT5 MetaTrader 5
Вопросы от начинающих MQL5 MT5 MetaTrader 5
  • 2019.03.26
  • www.mql5.com
Подскажите пожалуйста, такой показатель тестера в жизни реален? И хороший это или плохой результат за год с депо 3000...
 

コンパイラのバグ。このコードを含む.mqhファイルをコンパイル(シンタックスチェック)しても、エラーは表示されません。 実行ファイルをコンパイルするときだけ表示されるので、不便を感じています。

class A
{
 public: 
  A(int) {  }
};

class B : public A { };  // Здесь должна быть ошибка  'A' - wrong parameters count

B b;
 
Alexey Navoykov:

コンパイラのバグ。このようなコードを含む.mqhファイルをコンパイル(シンタックスチェック)すると、エラーが発生しない。 実行ファイルをコンパイルするときだけ発生するので、不便である。

ヘッダーは原理的にコンパイルできないから :)))

コンパイラ全体で強制的にヘッダーをコンパイルすると、誤検出が多発します。

PS.C++コンパイラも、そのようなクラスを使わなくても文句は言わない。
 
Andrey Pogoreltsev:

ヘッダーは原理的にコンパイルできないから :)))

ヘッダーをコンパイルするためにコンパイラ全体を強制すると、誤検出が多くなります。

PS.C++コンパイラも、このようなクラスを使わなくても文句は言わない。

コンパイルしないことは承知しています。 構文チェック(MEでは「コンパイル」とも言います)のことです、前の投稿でカッコ付きで指定したくらいですから。 C++コンパイラでも構文チェックを実行すると(通常はコマンドラインから)、ダーリンのように叱られます。