Aprender y escribir juntos en MQL5 - página 33

 

Tenemos que mover la inicialización a la lista de inicialización.

Sólo se pueden inicializar las constantes integrales estáticas en la declaración (al menos en C++, aún no lo sé en MQL5 :) )

 
Una pregunta más, la última. ¿Cuál es la razón por la que "" y NULL para las cadenas no son equivalentes?
 
Interesting:

Hablando de pájaros.

¿Y qué responderá el compilador a esto? Y responderá a lo siguiente '=' - uso de asignación ilegal

El recopilador no se dejó doblegar - '=' - uso de asignación ilegal.

Tengo una pregunta, ¿qué pasará si el programador (en este caso, yo) no inicializa las variables antes de usarlas (hace lo que el compilador exige y omite este momento en el constructor)?


La forma correcta de inicializar los miembros de las estructuras/clases en los constructores:

//Struct StrMQL4_Deal
struct StrMQL4_Deal
{
//----------------------------------------------------------------------------//
double TP;
double SL;
//----------------------------------------------------------------------------//
StrMQL4_Deal():TP(0),SL(0) { }
StrMQL4_Deal(double  tp,double  sl):TP(tp),SL(sl) { }
};
 
TheXpert:
Una pregunta más, la última. ¿Cuál es la razón por la que "" y NULL para las cadenas no son equivalentes?
NULL significa que la cadena no está asignada y "" que la cadena está asignada y tiene un valor.
 
mql5:

inicializar adecuadamente los miembros de la estructura/clase en el constructor o constructores:

Sí, me di cuenta de esto hace más de un año, al menos desde 2010.
 
Interesting:
Sí, lo descubrí hace más de un año, al menos desde 2010 lo hago así.

No se puede hacer correctamente desde 2010, porque la lista de inicialización se introdujo hace bastante tiempo :) .

mql5:

NULL significa que la cadena no está asignada y "" que la cadena está asignada y tiene un valor.

Bien, lo diré de otra manera. ¿Qué sentido tiene introducir el estado de la cadena "no distribuida" al usuario? ¿Se puede utilizar de alguna manera útil o es sólo una muleta?
 
TheXpert:
No lo has podido hacer bien desde 2010, ya que la lista de inicialización se ha introducido recientemente :) .
en el constructor.
 
TheXpert:

No lo has podido hacer bien desde 2010, ya que la lista de inicialización se introdujo hace muy poco :) .


Me refiero a la inicialización en el constructor de la clase y la declaración como

//----------------------------------------------------------------------------//
double TP;
double SL;
//----------------------------------------------------------------------------//
No lo recuerdo con exactitud, pero empecé a trabajar con objetos a principios de 2010 (primer trimestre, no puedo decirlo con exactitud; y es tedioso buscar las fuentes). Antes de eso, me ocupaba de las bibliotecas y estudiaba los fundamentos de MQL5 (o más bien, me ocupaba de los problemas de migración a MQL5).
 
Rosh:
Realiza una función de sobrecarga sobre diferentes tipos de datos en el array.
Oops, lo tengo. Por lo tanto, no hay una forma universal. La pregunta surgió porque la sobrecarga da lugar a funciones idénticas con una sola (!) diferencia: en la cabecera de la función, cuando hay que especificar un tipo de matriz. No es exactamente limpio, pero qué le voy a hacer, lo dejaré así. Esperaba que hubiera una salida, como en el manual de referencia.
 

Un simple script como este me da resultados extraños

void OnStart()
  {
   for(uchar u=120;u<136;u++)
     {
       switch(u>254)
        {
          case  true: Print(u,">254 - true");  break;
          case false: Print(u,">254 - false"); break;
        }
     }
  }

¿Tal vez alguien pueda explicar cuál es la razón? Cuando el número 254 se convierte explícitamente a uchar, funciona como se pretende.

Razón de la queja: