Проблема с передачей параметров функции
Массивы должны передаваться только по ссылке, то есть таким образом
void quickSort(ulong & arr[], long & inarr[], int left, int right) { тело функции
В разделе Передача параметров сказано:
MQL5 использует оба метода, за одним исключением: массивы и переменные типа структур (объекты классов) всегда передаются по ссылке. Для того, чтобы исключить изменения фактических параметров (аргументов, переданных при вызове функции) необходимо использовать спецификатор доступа const. При попытке изменить содержимое переменной, объявленной со спецификатором const, компилятор выдаст ошибку.
Компилятор сообщает коды ошибок, их можно посмотреть в справке в разделе Коды ошибок и предупреждений
- 2010.02.23
- MetaQuotes Software Corp.
- www.mql5.com
Я сделал функцию которая должна по вызову изменять значения в двух Массивах, но я не могу передать ей параметры! Она не хочет работать! Пишет: Arrays are passed by reference only.
Кто нибудь знает в чём проблема?
void quickSort(ulong arr[], long inarr[], int left, int right) {
int i = left, j = right;
ulong tmp;
long tmp2;
ulong pivot = arr[MathMod((left + right) , 2)];
/* partition */
while (i <= j) {
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
tmp = arr[i];
tmp2 = inarr[i];
arr[i] = arr[j];
inarr[i]=inarr[j];
arr[j] = tmp;
inarr[j] = tmp2;
i++;
j--;
}
};
/* recursion */
if (left < j)
quickSort(arr, inarr, left, j);
if (i < right)
quickSort(arr,inarr, i, right);
}