Ошибки, баги, вопросы - страница 2653
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ну не перекладывается STL один в один. Тут надо с большим оглядом на специфику.
Вы путаете теплое с мягким.
Вопрос не в STL. Там сам разберусь... (если у кого-то не перекладывается, это не означает, что это не возможно в принципе сделать)
Проще всего весь возможный функционал абстрактными методами в базовом классе или интерфейсе прописать, а в наследниках - или реализацию, или =delte.
В этом случае передаются в методы указатели или ссылки с типом этого самого базового класса.
Правда тут неизбежное зло в виде виртуальной таблицы, но это бог с ним, а вот архитектуру желательно выстроить, что бы не было нигде дорогого ветвления через dynamic_cast.
Предложенный вами способ был реализован ранее и так же упирается в этот же баг: https://www.mql5.com/ru/forum/1111/page2648#comment_15015191
Баг в приоритетах вызова перезагруженных функций, когда для параметра указателя/класса выполняется implicit type conversion.
В С++ - все ОК, а в MQL - ошибка компиляции "ambiguous call to overloaded function"
Выше предложен один из вариантов обхода, но он большой и не удобный, и использовать его еще для десятка таких же функций желания ну ни как нет.
Возможно есть что-то по проще???
Разработчики, подскажите пожалуйста, планируется ли исправление бага или это архитектурно невозможно?
внутри шаблонной функции, переданный указатель в рамках операции явного приведения типа ведет себя как класс, вызывая, соответственно, ошибку компиляции:
Туплю, не могу решить простую задачу. Нужно при следующих настройках запуска советника понять, что торговля запрещена.
Такая проверка не прокатывает.
OrderCheck - из пушки по воробьям. Прошу подсказать.
ANATOLI KAZHARSKI код
Спасибо, не заметил MQL_TRADE_ALLOWED.
Туплю, не могу решить простую задачу. Нужно при следующих настройках запуска советника понять, что торговля запрещена.
Такая проверка не прокатывает.
OrderCheck - из пушки по воробьям. Прошу подсказать.
Возможно причина в работе кеша генератора шаблонных классов.
Баг MT5(build 2340) дважды используется один и тот же код: первый проход - успешная компиляция, второй - ошибка компиляции.
Видимо проблемы связаны с кешом генератора шаблонных функций.
Ошибка исчезает если для шаблонной функции "void run(const T &ff)" заменить передачу по ссылке на передачу по значению "void run(const T ff)".
Баг MT5(build 2340) Ошибка компиляции при попытке доступа к internal class для шаблонного параметра шаблонной функции.