Передача объектов структуры по ссылке в качестве параметров функции

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
VANDER
86
VANDER  

Всем привет, столкнулся с такой проблемой: есть структура из 2-х массивов, массив этой структуры, и функция, одинаковая для элементов структуры (массивов). Функция по идее должна выбирать из них в качестве входных параметров, но как вы уже догадались моя реализация не работает, вот пример:

//+------------------------------------------------------------------+
struct str	                
  {
   int               mass_1[1];  //Массивы из которых нужно выбирать
   int               mass_2[1];
  };
str mass_3[1];
//+------------------------------------------------------------------+
void OnInit()
  {
   int a=0,b=1;
   if(a<b)                             //Условие
      func(mass_3,mass_3[0].mass_1);   //Вызов функции c 1 вариантом
   else
      func(mass_3,mass_3[0].mass_2);   //Вызов функции cо 2 вариантом
  }
//+------------------------------------------------------------------+
void func(str &Mass_3[],int &Mass_1_2[]) //Пытаюсь передать конкретный массив по ссылке
  {
   int size=ArrayRange(Mass_3[0].Mass_1_2,0);   //Ошибка в .Mass_1_2
  }
//+------------------------------------------------------------------+

При компиляции выдает 3 ошибки:

'Mass_1_2' - struct member undefined Test.mq5 20 34

'Mass_1_2' - parameter conversion not allowed Test.mq5 20 34

'Mass_1_2' - array required Test.mq5 20 34

Подскажите в чем ошибка, вроде уже всю справку прочитал, или если это не возможно, может предложите свой вариант?

Igor Makanu
9527
Igor Makanu  
вчера пример передачи массива структур по ссылки писал https://www.mql5.com/ru/forum/160683/page943#comment_12888236
VANDER
86
VANDER  
Ну с передачей массива проблем нет, как передать по выбору один из объектов структуры в качестве входного параметра функции?
Vladimir Simakov
5986
Vladimir Simakov  
VANDER:
Ну с передачей массива проблем нет, как передать по выбору один из объектов структуры в качестве входного параметра функции?
struct str                      
  {
   int               mass_1[1];  //Массивы из которых нужно выбирать
   int               mass_2[1];
  };
str mass_3[1];
//+------------------------------------------------------------------+
void OnInit()
  {
   int a=0,b=1;
   if(a<b)                             //Условие
      func(mass_3[0].mass_1);   //Вызов функции c 1 вариантом
   else
      func(mass_3[0].mass_2);   //Вызов функции cо 2 вариантом
  }
//+------------------------------------------------------------------+
void func(int &Mass_1_2[]) //Пытаюсь передать конкретный массив по ссылке
  {
   int size=ArrayRange(Mass_1_2,0);   //Ошибка в .Mass_1_2
  }
//+------------------------------------------------------------------+

Изучайте.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий