Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
уберите точки в имени!
и все заработает
Действительно, про имена там всё сказано, но про передачу массивов только по ссылке нет.
Кстати, ещё странные ошибки появились подобного содержания:
И таких довольно-таки много. С чем это связано вообще?
Указание на неправильный вызов перегруженной функции, т. е. когда функция с одним именем описана различными способами (разный набор входных параметров), но вызов ее в коде не дает компилятору возможности определить, какую все-таки из двух функций необходимо вызвать. Посмотрите, присутствует ли двойное описание функции fLotPrecision в файлах, используемых программой.
Массивы всегда передавались по ссылке. С самого начала.
Просто в старой семантике отсутствие знака & (передачи по ссылке) подразумевало константность передаваемого массива
Указание на неправильный вызов перегруженной функции, т. е. когда функция с одним именем описана различными способами (разный набор входных параметров), но вызов ее в коде не дает компилятору возможности определить, какую все-таки из двух функций необходимо вызвать. Посмотрите, присутствует ли двойное описание функции fLotPrecision в файлах, используемых программой.
Перегруженной это как? Типа очень загружена (чрезмерно)?
В общем-то, fLotPrecision встречается по коду только 2 местах:
Что тут может быть перегруженным?
Что тут может быть перегруженным?
Загрузив один из свой проектов в новый билд у меня посыпались ошибки. Ну меня это не удивило по некоторых известным причинам. Сразу возникли вопросы:
1. Как в файлах-включениях, так и в библиотеках как я понял теперь в параметрах функций передавать массивы нужно теперь обязательно по ссылке?
В эксперте в глобальных есть такие внешние переменные:
При компиляции данного эксперта компилятор ругается на эти 2 строки кода так:
2. Почему? Зачем так требуется точка с запятой??? Логика в чём?
Почитайте всю эту ветку https://www.mql5.com/ru/forum/148850/page38 и большинсво вопросов еще не заданных отпадет ....
Другое объявление функции с таким же именем нигде не встречается? В инклюднике может в каком?
Неа. Вот файлы, касаемые данного момента прикрепляю.
Неа. Вот файлы, касаемые данного момента прикрепляю.
В этих файлах тоже ничего нет?
Могу ошибиться, но.
hoz_Base@Include.mqh включает hoz_Base@ListOfFunc.mqh, который импортирует функции из hoz_Base@Library.ex4, которая, в свою очередь, вновь включает hoz_Base@Include.mqh.
Ситуация с повторным включением файлов в старой версии терминала отрабатывалась корректно, но оно ведет себя не так, когда в кольцо входит ex4-библиотека. Ведь получается, что в ней уже есть импортированная из нее же посредством инклюдников такая же функция.
Компилятор воспринимает это как перегрузку и начинает ругаться.
В этих файлах тоже ничего нет?
Объявляется данная (и вообще любая из тех функций) в канкретной библиотеке, а в тех других инклюдах тока объявления глобальных переменных, которые используются либо в соответствующих им библиотеках (судя по названию), либо в самой сове, которая включает эти инклюды.
Могу ошибиться, но.
hoz_Base@Include.mqh включает hoz_Base@ListOfFunc.mqh, который импортирует функции из hoz_Base@Library.ex4, которая, в свою очередь, вновь включает hoz_Base@Include.mqh.
Хотите сказать, что в инклюдниках разных библиотек не бывает так чтоб они ссылались друг на друга?
Ведь есть какая-то библиотека, в которой функции общие типа ND (нормализация) или ещё какие-нить, и есс-но что её будут импортировать разные другие библиотеки, которые используют данную функцию, а также и другие какие-то. Получается логично, что это не является ошибкой. Но как фактически.. тут вопрос остаётся открытым. Я не въехал пока что... :(