Так и пишите
int SizeArr(MyST &arr[]) { int size = ArraySize(arr); return(size) }
Так и пишите
Такой вариант подходит когда есть 1 массив структур , а если их например 3 , и каждый нужно передать в одну и туже функцию. Вот пример:
#property copyright "Copyright 2015, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict struct MyST_1 { int i_1; double d_1; datetime t_1; }; MyST_1 st_1[10]; //--- struct MyST_2 { int i_2; double d_2; datetime t_2; }; MyST_2 st_2[10]; //--- struct MyST_3 { int i_3; double d_3; datetime t_3; }; MyST_3 st_3[10]; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- create timer EventSetTimer(1); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- destroy timer EventKillTimer(); Comment(""); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { Comment(SizeArr(st_1)); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int SizeArr(MyST_1 &arr[]) { int size = ArraySize(arr); return(size); }
Здесь передаётся st_1 , а как передать st_2 и st_3 ? Писать функции SizeArr_2(MyST_2 &arr[]) и SizeArr_3(MyST_3 &arr[]) ? Хотелось бы обойтись одной функцией.
В чем проблема? почему не попробовали передать?
Познаний моих видимо не хватает , а примера в справке не нашёл , вот и спросил здесь ))
Так судя по коду они у вас одинаковые? Если так то делайте так и нет проблем.
struct MyST { int i_1; double d_1; datetime t_1; }; MyST st1[10],st2[10],st3[10]; int SizeArr(MyST &arr[]) { int size = ArraySize(arr); return(size) }
Либо если разные, то так
template <typename T> int SizeArr(T &arr[]) { int size=ArraySize(arr); return(size) }
Так судя по коду они у вас одинаковые? Если так то делайте так и нет проблем.
Либо если разные, то так
Блин как всё просто оказывается ) Мне Оба Ваши варианта интересны , буду пробовать...
Большое Вам человеческое Спасибо!
Блин как всё просто оказывается ) Мне Оба Ваши варианта интересны , буду пробовать...
Большое Вам человеческое Спасибо!
Пожалуйста, сам раньше на данном форуме много вопросов задавал)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Приветствую всех.
В mql5/mql4 есть возможность передавать массивы по ссылке в функцию в качестве параметров, например:
Так вот вопрос - есть массив структур
есть ли такая же возможность передавать массив структур в функцию , по аналогии с массивами?
Проблема в том что есть несколько массивов структур, и их поочерёдно должна использовать одна функция. Неохота городить несколько одинаковых по работе функций для этого , по логике проще обойтись одной. Полистал справку , но решения так и не нашёл (может плохо искал?).
Буду благодарен если кто на простом примере покажет как такое можно реализовать , если это конечно вообще возможно.