Функция, возвращающая 2 результата?

 

Мне нужно вернуть 2 результата из одной функции. Я могу разделить их и создать одну функцию для каждого нужного мне результата, но это намного больше кода и усложняет другие вещи. Возможно ли это в MT4?

 

проверка передачи параметров ny ссылка:

int res1 func(int& res2, другие параметры...)

 

Вы имеете в виду, что функцию можно запустить дважды, передавая отдельные параметры, чтобы каждый раз получать другой результат? Полагаю, это может сработать...

Хотелось бы просто сделать это:

return(a,b);
 

нет,

int x;

int y=func(x, другие параметры);

после вызова x=5 и y=2;

int res1 func(int& res2, другие параметры...)

{

res2=5

return(3);

}

 

Я имею в виду y=3

 

Спасибо, что пытаетесь помочь, но я не понимаю, что вы здесь делаете. Есть ли у вас функция, которая делает это полностью, которую вы могли бы просто скопировать и вставить сюда?

 

Все еще похоже, что возвращается только один результат - "3"

return(3);

?

 

просто найдите передачу параметров по ссылке в справке mql4:

Вообще передача по ссылке означает, что вы передаете фактическую переменную в функцию извне (используя &) и можете изменить ее значение внутри функции, и эта переменная будет все еще там, когда вы вернетесь из вызова.

Таким образом, переменной int x присваивается значение 0.

внутри функции вы устанавливаете x=5

когда вы возвращаетесь из функции, x=5, как было установлено функцией, таким образом, вы получили второй результат от функции, не возвращая 2 результата.

функции никогда не возвращают два результата, только один.

 

Хорошо, спасибо, irusoh1

 

Что отсутствует в объяснении irusoh1, так это то, что переменная должна быть массивом(ами). И, скорее, возврат не играет роли в заполнении/модификации массивов, а вместо этого изменяет их непосредственно по мере необходимости.

int Xarray[]; int Yarray[];

void Fun2result(int& Array[], int& Brray[], int pos)
{    Array[pos] = 2 + pos;
     Brray[pos] = 5 + pos;
} 
int start()
{  
    for(i=Bars-1; i>=0; i--)
       Fun2result(Xarray, Yarray, i); 
}

Удачи.

 

не обязательно должен быть массивом

Причина обращения: