Ошибки, баги, вопросы - страница 1965
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Именно так! Сейчас могу обозвать f сразу много всяких функций и переменную. Должен же быть здравый смысл при таких неоднозначностях, чтобы не вызывать случайных ошибок. По-моему, логично обломать, выдав пустую строку на typename f, чем порождать проблемы, когда случайно взял и определил еще одну f.
Не стоит так упорно везде искать здравый смысл, особенно среди багов. А то вас послушать, так любой баг MQL - это вовсе и не баг, а фича, которую специально предусмотрели мудрые разработчики ))
Как уже было замечено, если есть сомнения, то первым делом надо проверить это в C++, и уже дальше плясать от этого.
Что касается неоднозначностей, то они должны вызывать ошибку компилятора и никаких проблем. А в примере A100 всё было чётко и однозначно, поэтому не очень понятно о чём вы. Если появится необходимость перегрузить функцию - перегрузишь, исправишь ошибки компиляции в местах неоднозначностей, и всё.
Как в MQL сделать инициализацию статического члена шаблонного класса?
Как в MQL сделать инициализацию статического члена шаблонного класса?
Как в MQL сделать инициализацию статического члена шаблонного класса?
A100:
Вообще конечно данный способ не соответствует C++, но в MQL работает.
У меня была аналогичная проблема с выносом метода за пределы класса:
Но благодаря вам теперь тоже решение найдено:
хотя это тоже неправильно конечно, т.к. означает определение шаблонного метода, а не метода шаблонного класса. И если в классе присутствует и то, и другое, то возникнет неоднозначностьУ меня была аналогичная проблема с выносом метода за пределы класса:
Так намного удобнее. Единственное ограничение - нельзя чтобы между вклинивался другой класс (как в примере)
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
A100, 2016.05.19 23:26
Ошибка компиляции
т.к. означает определение шаблонного метода, а не метода шаблонного класса. И если в классе присутствует и то, и другое, то возникнет неоднозначность
Не возникнет - все продумано до нас (с). Нужно повторить строку template дважды (верхняя будет относится к классу - нижняя к методу)
Блин это ж пипец как запутанно выглядит.
A100:
Так намного удобнее.
Ну да, отсутствие необходимости ставить <T> - это прям такое серьёзное удобство )
Ну да, отсутствие необходимости ставить <T> - это прям такое серьёзное удобство )
У меня была аналогичная проблема с выносом метода за пределы класса:
неправильно конечно, т.к. означает определение шаблонного метода, а не метода шаблонного класса. И если в классе присутствует и то, и другое, то возникнет неоднозначность
Заметил, что часто методывыносят за пределы класса, а зачем? Посмотрел СБ, так там "мелкие" методы сразу в одну строку определены, "длинные" - за пределами. Удобства восприятия нет, т.к. ALT+G при внешнем определении предлагает не один, а два места перехода. А если есть перегрузки, то, соответственно, кратное двум. А по ALT+M итак все сразу видно.
Возможно, это какая-то дань наглядности задания интерфейса, но пока не проникся.