MT4 to MT5 - страница 5

 
Laryx:

в классе-предке переменная в вызове функции объявлена, как int, а в классе потомке - как const int. В результате - компилятор считает эти функции различными, а не перегружаемыми виртуальными.

А там есть ключевое слово virtual ? Без него перегрузки не будет, даже если функции полностью идентичны
 
A100:
А там есть ключевое слово virtual ? Без него перегрузки не будет, даже если функции полностью идентичны

Конечно. Я написал в Сервисдеск, они подтвердили проблему, и исправили ее.  

Речь идет о функциях:

virtual bool CSeries::BufferResize( int size)

Но:

virtual bool CiTime::BufferResize(const int size)

В одной из них отсутствует модификатор const, поэтому функции опознаются как различные, а не виртуальные. 

 
Laryx:

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

Кроме того, вот глядите, оттестировали отдельно классы, все работает, сложили вместе - в результате возвращаются ошибки, которых, по идее, быть не может. Что не так ? Как вы это обнаружите без пошагового прохождения кода (или трассировочных сообщений через каждые пару строк) ?

Или вот, относительно недавно я обнаружил баг в классах таймсерий Стандартной библиотеки - в классе-предке переменная в вызове функции объявлена, как int, а в классе потомке - как const int. В результате - компилятор считает эти функции различными, а не перегружаемыми виртуальными. По отдельности эти классы замечательно работают. Но как только я стал вызывать эти функции через указатель (задействовал механизм виртуальных функций) - код стал возвращать странные результаты. Мне понадобилось довольно кропотливое прохождение по коду, пока я заметил, что созданный объект таймсерии вызывает совсем не ту функцию, которую я предполагал. Боюсь, без отладчика - такой баг было бы выловить гораздо сложнее.  

Согласен с вами, что дополнительные режимы отладки, если они появятся, нам не помешают и естественно будут полезны, просто я говорил о возможностях решения проблем в текущей реализации.  
А если говорить о перспективе, то с учетом современного опыта софтверной индустрии, состояние отладки и контроля за выполнением становится перманентным, по типу управляемого кода CLR в .Net.
 
revers45:
Согласен с вами, что дополнительные режимы отладки, если они появятся, нам не помешают и естественно будут полезны, просто я говорил о возможностях решения проблем в текущей реализации.  

Ну, голь на выдумки хитра - сейчас приходится использовать трассировочные сообщения и долго разбираться в лог-файле. Но хочется нормального отладчика.  

 
Laryx:

Ну, голь на выдумки хитра - сейчас приходится использовать трассировочные сообщения и долго разбираться в лог-файле. Но хочется нормального отладчика.  

Выходит за оффтопили тему, а проблемы интеграции MT4 и MT5 остались, или может все уже всё для себя решили...
 

revers45:
Выходит за оффтопили тему, а проблемы интеграции MT4 и MT5 остались, или может все уже всё для себя решили...

 

На мой взгляд, счета МТ4 никто не будет "прикручивать" к МТ5. Как минимум, потому, что понятие "позиции" слишком отличается. Возможно, имеются и другие проблемы совместимости.

Да и нет смысла "тянуть" старый функционал в новый терминал. Как правильно сказал автор темы - MT4 - это простой алгоритмический язык. Язык МТ5 - гораздо шире и гибче по возможностям. Учитывая наличие Стандартной Библиотеки - он вобще выходит на новый уровень программирования.

 

Поэтому - не будет интеграции MT4-5. Будет простой портинг кода МТ4 в МТ5.

Ну а насчет оффтопа - соглашусь, это надо в другую тему. 

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
Причина обращения: