Errores, fallos, preguntas - página 1495

 
Karputov Vladimir:
Deje de hacer preguntas en nombre de abonados imaginarios (o ficticios). Si un abonado tiene una pregunta, que la haga él mismo. De lo contrario, lo consideraré como publicidad de la señal.
Me temo que me has malinterpretado. Mi señal no necesita publicidad desde hace mucho tiempo. Intento comprender los aspectos técnicos del servicio que utilizo. Sin embargo, soy el primero en ser abordado.
 
Artem Prischepa:
Me temo que me has malinterpretado. Mi señal no necesita publicidad desde hace mucho tiempo. Intento comprender los aspectos técnicos del servicio que utilizo por mi cuenta. Sin embargo, soy el primero en ser abordado.
En ese caso, estudia las preguntas en lasFAQ del servicio de Señales(primer post).
 

¿Es un error o mi mala comprensión del idioma?

void Func( int & Tmp )
{
  return;
}

void OnStart( void )
{
  int Tmp1, Tmp2;
  
  Func((0 > 1) ? Tmp1 : Tmp2); // '?' - parameter passed as reference, variable expected 
    
  return;
}
 
zaskok3:

Se trata de un error o de mi mala comprensión del lenguaje:

El resultado de una expresión ternaria es el contenido de la variable Tmp1 o de la variable Tmp2.

Y la función Func no debe pasar el resultado de la expresión, como tú tienes, sino una referencia

 

¿Cómo puedo solucionar este problema?

Después de instalar el Asesor Experto en el gráfico que construye los gráficos RENCO, el terminal se cuelga permanentemente.

Reiniciar el terminal no ayuda. He borrado el Expert de la carpeta, pero no ha servido de nada.

¿Qué hacer?

win7/64 mt4/950

 
Slawa:

El resultado de una expresión de operación ternaria es el contenido de la variable Tmp1 o de la variable Tmp2.

¿Es el contenido y no la variable en sí? Supongo que aquí es donde apareció mi mala comprensión. Gracias.

He probado la alternativa ternaria y no ha funcionado:

//  Func((0 > 1) ? Tmp1 : Tmp2); // '?' - parameter passed as reference, variable expected
  
  // Так не пашет
  (0 > 1) ? Func(Tmp1) : Func(Tmp2); // 'Func' - expression of 'void' type is illegal
  
  // Так, конечно, работает
  if (0 > 1)
    Func(Tmp1);
  else
    Func(Tmp2);

El ternario aquí es sin asignación.

 
zaskok3:

¿Exactamente el contenido, no la variable en sí? Por lo visto, aquí es donde apareció mi mala comprensión. Gracias.

Probé la alternativa ternaria, no funcionó:

Sin embargo, aquí el ternario no tiene asignación.

El resultado de una operación ternaria es el resultado de la primera expresión o el resultado de la segunda expresión, dependiendo del resultado de la expresión condicional.

El resultado debe asignarse a algún lugar (o ser miembro de otra expresión) porque es rvalue

Esto es lo mismo que escribir simplemente

int a=1;
int b=2;

a + b;
 

Slawa:

El resultado debe asignarse a algún lugar (o ser miembro de otra expresión) porque es un rvalue

Esto es lo mismo que escribir

Si sustituyo void Func por int Func, efectivamente el resultado es el mismo. Es un fastidio con el vacío. ¿Es sólo por la frase resaltada?
 
zaskok3:
Si sustituyo void Func por int Func, el resultado es efectivamente el mismo. El vacío es un fastidio. ¿Es sólo por la frase resaltada?
 
Slawa:
Lo tengo. ¡Gracias por la educación!