Новая версия платформы MetaTrader 5 build 2085: Интеграция с Python и массовые улучшения в тестере стратегий - страница 34

 

Ошибка компилятора.  Не видит реализацию виртуального метода:

class A
{
 public:
  virtual void f() = 0;
};

class B : public A
{
 public:  
  B() { }
  B(const B&) { }
  
  B GetB()  // 'GetB' - cannot instantiate abstract class
  { 
    B b;
    return b;
  }
  
  virtual void f() { }
};


p.s. А если поменять местами, то всё нормально )

  virtual void f() { }
  
  B GetB()
  { 
    B b;
    return b;
  }
 
fxsaber:

Определите f выше GetB. Наверное, это ошибка.

Да, только что об этом добавил )
 

Как насчёт добавить неявный конструктор копирования для классов?  Ведь для структур он имеется.  Чем классы провинились?

struct S { char a; };

class C  { };

S getS() { S s; return s; } // Всё ОК

C getC() { C c; return c; } // object of 'C' cannot be returned, copy constructor 'C::C(const C &)' not found
 
Методы класса, помеченные как delete, продолжают появляться в списке подстановки имён.  Желательно бы убрать, а то мешают.
 

Не обновляется список экспертов в окне тестера терминала, в навигаторе обновляется...
приходится каждый раз делать перезапуск  терминала, если создал новую ревизию эксперта.

 

нашел такой баг.

Не загружается Шаблон в тестере стратегий через меню Charts - Templates


если выбрать из списка, то не работает.

а если нажать на Load Template и выбрать файл - то все ОКЕ.




билд



и еще нет списка индикаторов, если индикаторы были загружены через шаблон:


 
Alexey Navoykov:
Методы класса, помеченные как delete, продолжают появляться в списке подстановки имён.  Желательно бы убрать, а то мешают.

Да, удобно делать public-наследование и при этом закрывать для юзера некоторые методы родителя.

 
В MQL не хватает возможности узнать имя файла по имеющемуся хэндлу.  Часто бывает, что в функции, принимающей файловый хэндл, возникает потребность допустим вывести имя файла.  А таскать везде за собой дополнительный аргумент - это излишняя морока. Почему бы не добавить функцию FileGetString для этих целей с соответствующими свойствами: FILE_NAME,  FILE_PATH_NAME.  А также туда же можно добавить FILE_FINAL_PATH_NAME  для получения финального пути к файлу (раскрытие символической ссылки).
 
Alexey Navoykov:
В MQL не хватает возможности узнать имя файла по имеющемуся хэндлу.  Часто бывает, что в функции, принимающей файловый хэндл, возникает потребность допустим вывести имя файла.  А таскать везде за собой дополнительный аргумент - это излишняя морока. Почему бы не добавить функцию FileGetString для этих целей с соответствующими свойствами: FILE_NAME,  FILE_PATH_NAME.  А также туда же можно добавить FILE_FINAL_PATH_NAME  для получения финального пути к файлу (раскрытие символической ссылки).

Создаю подобный объект. Где есть const string FileName-поле. Ну и передаю указатель на него и т.д.


ЗЫ А так можно узнать с высокой вероятностью через FileGetInterger+FileFind*.

 
fxsaber:

Создаю подобный объект. Где есть const string FileName-поле. Ну и передаю указатель на него и т.д.

Ну это понятное дело, у вас там просто открытие файла.  Имелись ввиду функции, обрабатывающие открытый файл.  Взять для примера стандартную библиотеку:  там даже в базовом классе есть функции Read и Write, принимающие файловый хэндл.

p.s. А понял, вы имели ввиду какой-то другой объект. Но это уже немного другая тема.  Речь идёт об универсальном штатном функционале.  Тогда бы и хранить не пришлось эти имена, а просто получать в любой момент.