¿Función que devuelve 2 resultados?

 

Necesito devolver 2 resultados de una función. Puedo separarlos y crear una función para cada resultado que necesito, pero es mucho más código y complica otras cosas. ¿Es esto posible con MT4?

 

comprobar el paso de parámetros ny referencia:

int res1 func(int& res2, otros parámetros...)

 

¿Te refieres a ejecutar la función dos veces, pasando un parámetro especial para obtener un resultado diferente cada vez? Supongo que eso podría funcionar...

Aunque me gustaría poder hacer esto:

return(a,b);
 

no,

int x;

int y=func(x, otros parámetros);

después de la llamada x=5 e y=2;

int res1 func(int& res2, otros parámetros...)

{

res2=5

return(3);

}

 

Quiero decir y=3

 

Wow, gracias por tratar de ayudar, pero no entiendo lo que estás haciendo aquí. ¿Tiene una función completamente codificada que hace esto que sólo podría copiar y pegar aquí?

 

Parece que sólo devuelve un resultado: "3".

return(3);

?

 

solo encuentra pasar parametros por referencia en la ayuda de mql4:

Generalmente pasar por referencia significa que pasas una variable real a la función desde fuera (usando &) y puedes cambiar su valor dentro de la función y esa variable seguirá ahí cuando vuelvas de la llamada.

así, int x pone el valor a 0.

dentro de la función pones x=5

cuando regresas de la función x=5 como se establece en la función, así que das tu segundo resultado de la función sin devolver 2 resultados.

las funciones nunca devuelven 2 resultados solo uno.

 

OK, gracias, irusoh1

 

Lo que falta en la explicación de irusoh1 es que la variable tiene que ser Array(s). Y que el retorno no juegue un papel en el llenado/modificación de los arrays, sino que lo modifique directamente según sea necesario.

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); 
}

Buena suerte.

 

no necesita ser un array