Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
О чем речь?
Лишняя запутанность. Сами ж пишете, что фактически тоже самое, что у меня. Только запутанней )
Ну так о схожести с Вашим вариантом сообразил уже ПОСЛЕ его написания.
Меня на этот пример навела ситуация, когда удалось перегрузить CopyTicks с идентичными (как в описании) входными параметрами.
Вообще приведённый мной пример демонстрирует, так сказать, многоуровневый способ перегрузки - это особенно полезно в MQL, который ещё недостаточно продвинутый, чтобы делать многие перегрузки самостоятельно. Например, если попытаться перегрузить функции с константным аргументом по ссылке и просто аргументом по ссылке, то MQL не переварит такое. А используя данный способ, можно сделать это (правда не в глобальной видимости, а внутри класса).
Я иногда использую 2-3 уровня наследования, на каждом отсеиваются требуемые варианты.
p.s. Хотя не. Похоже я отстал от жизни, MQL уже умеет делать такие перегрузки ) Значит актуальность этого шаманства проходит
Т.е. данные хранить изначально в классах? Ну тогда конечно вопросов бы не возникало. А речь шла именно о нативных данных.
Например, для этого.
Требуется реализовать примерно такую конструкцию, чтобы функция могла отдельно обрабатывать переменные стандартных типов, и отдельно объекты структур. Т.е. нужна специализация шаблонной функции, либо просто сочетание шаблона и перегрузки. Но MQL ничего этого не поддерживает, в отличие от C++.
Может у кого есть идеи, как тут выкрутиться костыльными способами? Т.е. каким-то образом отделить структуры от остальных типов.
void Write(T& a){ // обработчик для одних типов
}
template<typename T>
void Write(T& a,int x){ // обработчик для других типов
}
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 1570: Улучшение витрины Маркета и расширение шаблонных функций в MQL5
MetaQuotes Software Corp., 2017.03.22 16:31
Новая версия платформы MetaTrader 5 build 1570: Улучшение витрины Маркета и расширение шаблонных функций в MQL5
В результате выполнения данного кода мы увидим, что для пары int+string была использована шаблонная функция Assign(), а при втором вызове для пары bool+string уже использовалась перегруженная версия.
Таким образом, специализация происходит не через параметры вызова, а прямым указанием типов.