Hatalar, hatalar, sorular - sayfa 2660

 
Igor Makanu :

Kimliğe ihtiyacım var - test cihazında yerel bir aracı, neden böyle bir işlevsellik olmadığı açık değil

 TerminalInfoString ( TERMINAL_DATA_PATH );
 

Rastgele evde kaybolmamak için tekrar ediyorum)

1. Söyle bana, eğer bir ChartOpen() açarsam, o zaman Uzman Danışman'ın çalıştığı grafiğime odağı (aktivite, görünürlük) kapatmadan nasıl geri getirebilirim.

2. Teklif, Sor, Kapat[0] grafiğinin fiyatıyla neden eşleşmiyor kim bilir https://www.mql5.com/ru/forum/160683/page1082#comment_15152111

 
fxsaber :

evet onu arıyordum oraya bakmama gerek yoktu

böylece acente numarasını alabilirsiniz

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

Çağrı aşırı yüklenmiş bir şablon olmayan işlevden yapıldığında, argüman türlerinin açık bir göstergesiyle bir şablon işlevi çağrılırken MT5 hatası (derleme 2342) derleme hatası .

 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 hatası (derleme 2342), geçirilen parametreler için uygun bir imzaya sahip aşırı yüklenmiş bir şablon işlevi olmasına rağmen şablon işlev kodunu oluştururken bir derleme hatasına neden olur.
C++ çevrimiçi: 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 hatası (derleme 2342), geçirilen parametreler için uygun bir imzaya sahip aşırı yüklenmiş bir şablon işlevi olmasına rağmen şablon işlev kodunu oluştururken bir derleme hatasına neden olur.
C++ çevrimiçi: https://onlinegdb.com/HyxjmV-DVI

Yaptığınız tüm zorlu testler hakkında Metaquotes'tan hiç yanıt aldınız mı?
 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

Sergey Dzyublik , 2020.02.28 22:21

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

struct B : public C::A {
   char data;
};
Bu seçeneği bilmiyordum, teşekkürler.
 
Alain Verleyen :
Yaptığınız tüm zorlu testler hakkında Metaquotes'tan hiç yanıt aldınız mı?

Evet ve hayır.
Benim tarafımdan şikayet yok, ama iyi bir söz asla incitmez.

 
Aşağıdaki sorunu çözemiyor gibi görünüyor:
Geçilen parametreleri ayırt etmek ve her durumda kendi algoritmanızı yürütmek için test işlevi için "kısmi uzmanlaşma" nasıl elde edilir?
Yardımcı olmaktan memnuniyet duyarım, teşekkürler.

Beklenen davranışla çevrimiçi 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 :
Aşağıdaki sorunu çözemiyor gibi görünüyor:
Geçilen parametreleri ayırt etmek ve her durumda kendi algoritmanızı yürütmek için test işlevi için "kısmi uzmanlaşma" nasıl elde edilir?
Yardımcı olmaktan memnuniyet duyarım, teşekkürler.
 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    
}