Ошибки, баги, вопросы - страница 2474

 
fxsaber:

Как делаете выбор между использованием шаблонов и void* ?

Какого то особого подхода нет, как то само собой выбирается на уровне интуиции

 
К сожалению, на текущий момент возможности указателей на функции (function pointer types) в МТ4/MT5 весьма ограничены и не практичны из-за ряда дефектов:
 (не исправлено в MT5(build 2060)) "Ошибка компиляции при повторном использовании одной и той же сигнатуры функции в рамках typedef".
 (не исправлено в MT5(build 2060))  "При работе с typedef использование шаблонной функции с явной специализацией не вызывает генерацию кода этой шаблонной функции".


В виду ожидаемого внедрения пространства имен, прошу в рамках исправлений дефектов рассмотреть возможность внедрения поддержки следующего С++ подобного поведения:
//#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 build 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 никак не получается перегрузить функцию.

 

Небольшой казус в МТ 4   в МТ 5 не проверял...


 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 4 build 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:

В пятёрке сделали правильную инициализацию статиков. По первому доступу.

В четвёрке не делали. И неизвестно когда сделаем.

 

build 2062: Ошибка 5305 при создании custom символа. 

В 2060 все Ок.

Помню, в МТ4 был ключ командной строки /skipupdate

Есть ли что-то подобное в МТ5? Как запретить обновления?

 

fxsaber:

MT4 - вызывается, MT5 - нет.

Похоже, вы компилируете старым компилятором.  Компилируйте современным (идущим в составе MT5), и всё будет как надо.
 
Alexey Navoykov:
Похоже, вы компилируете старым компилятором.  Компилируйте современным (идущим в составе MT5), и всё будет как надо.

Компилировал через 1966. Попробовал 2062 в MT4 - работает правильно. Спасибо!

Жаль, это не победить.

Причина обращения: