Новая версия платформы MetaTrader 5 build 5200: расширение OpenBLAS и усиление контроля в MQL5 - страница 10
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Нет ведь однозначности для методов/функций и полей/переменных.
Строка для поиска: Uluchshenie 131.Область видимости (далее скоп) в новой версии MQL имеет свой список именованных объектов компиляции (переменные, функции и т.д.)
Обход дерева скопов при поиске именованной сущности происходит от текущего скопа к глобальному корню, до первого найденного, что приводит к сокрытию всех сущностей с тем же именем в скопах выше по дереву.
В скопе A имеется 'Func1' принимающий строку, но внутри скопа A при вызове 'Func1' передаётся целое.
Если раньше такой код приводил к тому, что внутри A вызывалась глобальная ::Func1, то теперь, поиск "не видит" глоальной.
Мы уже 5 лет назад предупреждали на форуме о данном предстоящем изменении и в компиляторе до версии 5200 можно было видеть предупреждение компиляции "deprecated behavior, hidden method calling will be disabled in a future MQL compiler version"
Обход дерева скопов при поиске именованной сущности происходит от текущего скопа к глобальному корню, до первого найденного, что приводит к сокрытию всех сущностей с тем же именем в скопах выше по дереву.
Мы уже 5 лет назад предупреждали на форуме о данном предстоящем изменении и в компиляторе до версии 5200 можно было видеть предупреждение компиляции "deprecated behavior, hidden method calling will be disabled in a future MQL compiler version"
У меня все проекты компилировались без единого предупреждения. b5200 изменил ситуацию в корне.
В скопе A имеется 'Func1' принимающий строку, но внутри скопа A при вызове 'Func1' передаётся целое.
Если раньше такой код приводил к тому, что внутри A вызывалась глобальная ::Func1, то теперь, поиск "не видит" глоальной.
Будет оператор using, который решит проблему ограничения функционала (сделает поведение компилятора "как раньше")
И для базового скопа с шаблонами можно будет использовать using?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 5200: расширение OpenBLAS и усиление контроля в MQL5
fxsaber, 2025.08.11 13:53
И для базового скопа с шаблонами можно будет использовать using?
Нет
Объявите в классе шаблонный метод с нужным именем, который выполняет проброс вызова в глобальную функцию, компилятор такие микро-функции успешно инлайнит.
Ваш метод похож на "хак", наличие или отсутствие глобальной функции, изменяет поведение объекта, это чревато трудноуловимыми багами.
Ужесточение правил резолвинга имени "стандартизирует" код.
При написании кода, нужно внедрять в сознание мысль - код пишется для чтения абстрактным читателем, а не тобой (а через 2+ года и свой код читается как чужой).
При написании кода, нужно внедрять в сознание мысль - код пишется для чтения абстрактным читателем, а не тобой (а через 2+ года и свой код читается как чужой).
а никто не хочет внедрить в сознание мысль что через 2 года, прежний код всё-так-же должен компилироваться и работать..
???
а никто не хочет внедрить в сознание мысль что через 2 года, прежний код всё-так-же должен компилироваться и работать..
???
свой код
Не могли бы ли вы ответить на вопрос, пожалуйста?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Vladislav Boyko, 2025.05.11 00:20
Сколько раз будет перерисован график если ChartRedraw() будет вызван 2 раза в пределах одного выполнения OnCalcualte()?
OnCalculate там упомянут для примера и символизирует любую event handling function
Объявите в классе шаблонный метод с нужным именем, который выполняет проброс вызова в глобальную функцию, компилятор такие микро-функции успешно инлайнит.
Спасибо.
Ужесточение правил резолвинга имени "стандартизирует" код.
При написании кода, нужно внедрять в сознание мысль - код пишется для чтения абстрактным читателем, а не тобой (а через 2+ года и свой код читается как чужой).
Согласен. Но в MQL5 иногда приходилось писать гадкие костыли, чтобы обойти ограничения языка. Например, предложенный Вами проброс, но в обратном направлении. Это нужно для обхода ограничения указателей на функции: нельзя сделать указатель на статический метод.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 5200: расширение OpenBLAS и усиление контроля в MQL5
fxsaber, 2025.08.11 14:53
У меня все проекты компилировались без единого предупреждения. b5200 изменил ситуацию в корне.
Чтобы не быть голословным, библиотека TypeToBytes компилировалась без предупреждений. Сейчас - черт ногу сломит.