오류, 버그, 질문 - 페이지 2474

 
fxsaber :

템플릿과 void* 중에서 어떻게 선택합니까?

직관 수준에서 스스로 선택하므로 특별한 접근 방식은 없습니다.

 
불행히도 현재 MT4/MT5에서 함수 포인터 유형의 가능성은 매우 제한적이며 여러 가지 결함으로 인해 실용적이지 않습니다.
  (MT5(빌드 2060)에서 수정되지 않음) "typedef 내에서 동일한 함수 서명을 재사용할 때 컴파일 오류 ".
  (MT5(빌드 2060)에서 수정되지 않음) "typedef로 작업할 때 명시적 특수화와 함께 템플릿 함수를 사용하면 템플릿 함수 코드가 생성되지 않습니다."


네임스페이스의 예상되는 구현을 고려하여 결함 수정의 일부로 다음 C++ 유사한 동작 에 대한 지원을 구현할 가능성을 고려해 보시기 바랍니다.
 //#include <iostream>

template < typename T>
class A{
public :
     typedef void (*callback)(T&);   //class namespace for function pointer type
    callback f_ptr;
    T data;
};

template < typename T>
class B{
public :
     typedef void (*callback)(T&);   //class namespace for function pointer type
    callback f_ptr;
};

template < typename T>
void func(T& value){
    ++value;
}


void OnStart (){
//int main(){
    A< int > a;
    B< int > b;
    
    a.f_ptr = func< int >;       // automatic code generation of templates functions
    b.f_ptr = a.f_ptr;         // assignment operation for function pointers with the same function signatures and different function pointer types.
    
     int x = 1 ;
    b.f_ptr(x);
     printf ( "%d\r\n" , x);                   //2
     printf ( "%d\r\n" , b.f_ptr == a.f_ptr); //1     // equal operation for function pointers with the same function signatures and different function pointer types.
}
 

여기요! 주제에 주목해주세요

https://www.mql5.com/ru/forum/314275

간단히 말해서 테스터는 기호 설정에 지정된 것과 일치하지 않는 여백을 계산합니다.
[bug] Неправильная Margin при тестировании на custom symbol
[bug] Неправильная Margin при тестировании на custom symbol
  • 2019.05.25
  • www.mql5.com
Привет! Создал кастомный символ с параметрами, скопированными из реального Si-3.19. См. скриншоты. Загрузил для него историю...
 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MetaTrader 4 플랫폼 빌드 1170의 새 버전

fxsaber , 2019.05.28 12:10

MT4 컴파일러 버그입니까?
 #property strict

void Func( int &[] ) {}
void Func( int &[][ 2 ] ) {} // 'Func' - function already defined and has body

void OnStart ()
{
   int Array1[];
   int Array2[][ 2 ];
  
  Func(Array1);
  Func(Array2); // 'Array2' - invalid array access
}


MT5에서는 문제가 없습니다. MT4에서 함수를 오버로드하는 방법은 없습니다.

 

MT 5의 MT 4의 작은 사건이 확인되지 않았습니다 ...


 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MetaTrader 4 플랫폼 빌드 1170의 새 버전

fxsaber , 2019.05.28 14:24

MT4와 MT5의 생소한 차이점을 발견했습니다. MT4 버그인가요?
 #property strict

bool Print2( const string Str )
{
   Print (Str);
  
   return ( true );
}

void Func()
{
   static bool b = Print2( __FUNCSIG__ ); // MT4 - вызывается, MT5 - нет.
}

void OnStart () {}
 
fxsaber :

상위 5개에서 정적 초기화를 올바르게 수행했습니다. 첫 번째 액세스로.

그들은 4시에 그것을 하지 않았습니다. 그리고 우리는 우리가 언제 될지 모릅니다.

 

빌드 2062: 사용자 지정 기호를 만들 때 오류 5305가 발생했습니다.

2060년에는 모든 것이 정상입니다.

MT4에는 명령줄 스위치 /skipupdate가 있었던 걸로 기억합니다.

MT5에도 비슷한게 있나요? 업데이트를 비활성화하는 방법은 무엇입니까?

 

fxsaber :

MT4는 호출되고 MT5는 호출되지 않습니다.

오래된 컴파일러로 컴파일하는 것 같습니다. 최신으로 컴파일하면(MT5와 함께 제공됨) 모든 것이 잘 됩니다.
 
Alexey Navoykov :
오래된 컴파일러로 컴파일하는 것 같습니다. 최신으로 컴파일하면(MT5와 함께 제공됨) 모든 것이 잘 됩니다.

1966년까지 컴파일. MT4에서 2062년까지 시도 - 올바르게 작동합니다. 고맙습니다!

불행히도 그것은 승리하지 않을 것입니다 .