Как передать второе измерение двумерного массива по ссылке в функцию? - страница 5

 
TheXpert:
#property strict

double arr[][2];

void InitArray(double& a[][], int size)
{
   ArrayResize(a, size);
   for (int i = 0; i < size*2; i++)
   {
      a[i / 2][i % 2] = i;
   }
}

void OnStart()
{
   InitArray(arr, 5);
   string s = "";
   int size = ArrayRange(arr, 0);
   for (int i = 0; i < size; i++)
   {
      s += arr[i][0];
   }
   Print(s);
   s = "";
   for (int i = 0; i < size; i++)
   {
      s += arr[i][1];
   }
   Print(s);
}

странно, этот код в MQL4 без проблем компилируется и работает, а в MQL5 выдает ошибку

'[' - invalid index value tst2.mq5 5 27


если не ошибаюсь, то разработчики писали, что компиляторы MQL4 и MQL5 максимально приближены по синтаксису, а тут такой непонятный баг - невозможно передать по ссылке двухмерный массив.... одни эмоции


 
Igor Makanu:

странно, этот код в MQL4 без проблем компилируется и работает, а в MQL5 выдает ошибку

'[' - invalid index value tst2.mq5 5 27


если не ошибаюсь, то разработчики писали, что компиляторы MQL4 и MQL5 максимально приближены по синтаксису, а тут такой непонятный баг - невозможно передать по ссылке двухмерный массив.... одни эмоции

Вроде нужно определить размерность: void InitArray(double& a[][2], int size)

 
Vitaly Muzichenko:

Вроде нужно определить размерность: void InitArray(double& a[][2], int size)

да так в MQL5 пропустит компилятор, но почему в MQL4 доступны 2-х мерные массивы без размерности при передаче параметров, а в новом и крутом MQL5 это уже не доступно!

знаю как прикрутить очередной костыль, но как то вот (((

 
Igor Makanu:

да так в MQL5 пропустит компилятор, но почему в MQL4 доступны 2-х мерные массивы без размерности при передаче параметров, а в новом и крутом MQL5 это уже не доступно!

знаю как прикрутить очередной костыль, но как то вот (((

Это такой закон: "Где-то прибудет, а где-то убудет"