Нужно вернуть из класса массив или иметь возможность менять массив внутри класса(массив нужен вне класса, то есть на глобальном уровне) - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ну, покажите на примере как сделать) Я по разному пробовал, пока не получается.
да, так как я думал, у меня тоже не получаеся.
Да. Класс может вернуть, только одно значение, а мне нужно много. Как в Питоне не получится же сделать вернуть return с массивом?
Можно вернуть структуру (в ней много даных).
Можно создать экземпляр класса по new, и вернуть указатель на него (а внутри экземпляра - много данных).
Можно передать в функцию указатель на экземпляр класса (где много данных), и в функции менять данные, как требуется, после выхода из функции они будут изменены (что эквивалентно возврату многих даннных).
Можно иметь глобальный экземпляр объекта, доступный отовсюду, и внутри функции менять его даные.
Прочитав документацию, где сказано, что при изменении массива скопированного из переданного по ссылке, переданный массив тоже меняется.
У меня не меняется. Что делаю не так?
вызываю в скрипте:
Можно массив обернуть в класс и объект класса передавать по ссылке.
Можно шаблонный класс сделать:
PS.
Полноценно переопределить оператор [] не получится, т.к. в MQL нельзя вернуть ссылку на данные простого типа.
Прочитав документацию, где сказано, что при изменении массива скопированного из переданного по ссылке, переданный массив тоже меняется.
У меня не меняется. Что делаю не так?
вызываю в скрипте:
Самый простой и наглый способ - массив
double m_array[];
Перенесите из секции private в секцию public.
Если хотите отставить его в private, создайте методы для получения заданного элемента массива и для установки, еще парочка методов пригодится - изменение размера массива и получения размера массива.
Но наверно не это надо...
***
Такого, чтобы передать в объект ссылку на массив, а потом через нее менять массив - нет здесь такого (имеется ввиду возможность менять этот массив потом в любое время). Но можно, как уже было сказано ранее, обернуть массив в класс, создать объект и передавать ссылку на этот объект куда угодно, тогда получится работать с одними и тем же массивом из разных мест.
И делов то.
Но это если прямая правка нужна. И тогда придется гонять ссылку везде где нужно работать с этим массивом.
Если очень хочется, то можно закостылить))))
Пример:
PS/ Правда это не совсем то, что вам нужно.
PPS/ Развитие мысли: