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

 
Igor Makanu:

テスターにID-ローカルエージェントが必要なのですが、なぜそのような機能がないのでしょうか?

TerminalInfoString(TERMINAL_DATA_PATH);
 

ランダムに迷子にならないように、繰り返したいと思います)

1.チャートChartOpen()を開いた後、EAが動作するチャートにフォーカス(アクティビティ、可視性)を戻すには、チャートを閉じずにどのようにすればよいか教えてください。

2.なぜBid、Askがチャート価格と一致しないか知っている人 Close[0]https://www.mql5.com/ru/forum/160683/page1082#comment_15152111

 
fxsaber:

ええ、私はそれを探していた、私はそれが見ている場所だとは思わなかった

そうやって、エージェントの番号を知ることができるんです。

string path = TerminalInfoString(TERMINAL_DATA_PATH);
string agent = StringSubstr(path,StringLen(path)-4);
 

MT5 のバグ(ビルド 2342)オーバーロードされた非テンプレート関数から呼び出された場合、明示的な引数型を持つテンプレート関数を呼び出すとコンパイルエラーが 発生します。

template<typename T>
class B{
public:
   void func(const T value){
      printf("1\r\n");
      func<T>(value);             //'func<int>' - ambiguous call to overloaded function with the same parameters        
   };
   
   template<typename TT>
   void func(const TT){
      printf("2\r\n");
   };
   
};


void OnStart(){
   B<int> b;
   b.func(1);
   b.func(1.1);
}
 

MT5 (build 2342)で、テンプレート関数のコードを生成する際、渡されたパラメータに適したシグネチャを持つオーバーロードされたテンプレート関数があるにもかかわらず、コンパイルエラーが発生する不具合。
C++オンライン: https://onlinegdb.com/HyxjmV-DVI

#ifdef __cplusplus
    #include <iostream>
#endif


class C{
public:
   struct A{
      char aaa;
   };
   
   template<typename T>
   void test(A&, T&, T&, void* = NULL){
      printf("1");
   }
   
   template<typename T>
   void test(T&, T&, T&){
      printf("2");
   }
};

struct B : public C::A{
   char data;
};

struct D{
   char data;
};


void OnStart(){
   C c;

   B b;
   D d;
   
   c.test(b, b, b);    // should be: 2       
   c.test(b, d, d);    // should be: 1       //Compile Error: template parameter ambiguous, could be 'B' or 'D'
}

int main(){
   OnStart();
   return 0;
}
 
Sergey Dzyublik :

MT5 (build 2342)で、テンプレート関数のコードを生成する際、渡されたパラメータに適したシグネチャを持つオーバーロードされたテンプレート関数があるにもかかわらず、コンパイルエラーが発生する不具合。
C++オンライン: https://onlinegdb.com/HyxjmV-DVI

Metaquotesから、ハードなテスト作業についての返事をもらったことはありますか?
 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

バグ、バグ、質問

セルゲイ・デジブリク, 2020.02.28 22:21

class C{
public:
   struct A{
      char aaa;
   };
};

struct B : public C::A{
   char data;
};
この機能は実装したことがありません、ありがとうございました。
 
Alain Verleyen:
Metaquotesから、ハードなテスト作業についての返事をもらったことはありますか?

イエスでもあり、ノーでもある。
私自身は不満はありませんが、良い言葉は決して損にはなりません。

 
以下の問題を解決する方法はありません。
渡すべきパラメータを区別し、それぞれのケースで異なるアルゴリズムを実行するために、テスト関数の「部分的な特殊化」を取得するにはどうすればよいでしょうか。
喜んでお手伝いさせていただきます、ありがとうございました。

C++を期待通りの動作でオンラインにする(https://onlinegdb.com/rycNVNDN8)
class C{
public:
   struct A{
   public:
      char aaa;
      
      A (char value = 0) : aaa(value){}
      void set(char value){
         aaa = value; 
      };
      char get(){return aaa;}
   };
   
   void test(A&, A& a1, A& a2){
      printf("1");
      a1.aaa = a2.aaa;
   }
   
   template<typename T>
   void test(A&, T& d1, T& d2){
      printf("2");
      d1.set(d2.get());
   }
};

struct B : public C::A{};


struct D{
private:
   char data;
public:  
   D(char value = 0) : data(value){}
   void set(char value){
      data = value; 
   };
   char get(){return data;}
};


void OnStart(){
   C c;

   B b;
   D d;
   
   c.test(b, b, b);    // 2      should be: 1
   c.test(b, d, d);    // 2      should be: 2   
}
 
Sergey Dzyublik:
以下の問題を解決する方法はありません。
転送されたパラメータを区別して、それぞれのケースで異なるアルゴリズムを実行するために、テスト関数に「部分的な特殊化」を行うには?
喜んでお手伝いさせていただきます、ありがとうございました。
class C{
public:
   struct A{
      char aaa;
   };
   
   /*void test(A&, A&, A&){
      printf("1");
   }*/
   
   template<typename T>
   void test(A&, T&, T&){
      if (sizeof(T)==sizeof(A)) printf("1");
      else                      printf("2");
   }
};

struct B : public C::A{
   char data;
};

struct D{
   char data;
};


void OnStart(){
   C c;

   B b;
   D d;
   
   c.test(b, b, b);    // 2      should be: 2 
   c.test(b, d, d);    // 1      should be: 1    
}