Errores, fallos, preguntas - página 1922

 

Error de compilación.

#define  MACRO( x )      ((x) + 2)
struct A {
        A( int, int ) {}
};
template<typename T>
struct B {
        static A a;
};
template<typename T>
A B::a( MACRO(1), 2 ); //error: '(' - declaration without type
Y sintemplate<typename T> está bien... ¿cuál es la diferencia?
 
A100:

Error de compilación

Y sintemplate<typename T> - ok... ¿cuál es la diferencia?

Son los paréntesis extra en la macro.

struct A {
        A(int) {}
};

template<typename T>
struct B {
        static A a;
};
template<typename T>
A B::a((0));

Si los quitas, se compilará.

 
fxsaber:

Son los paréntesis extra en la macro.

Si los quitas, se compilará.

Si eliminas template<typename T>, también compilará (incluso con paréntesis)
 
A100:

Los archivos .log %AppData%\MetaQuotes\Terminal...\MQL5\Logs\YYYMMDD.log no se actualizan puntualmente

La actualización sólo se produce: tras reiniciar el terminal o tras seleccionar el menú Ver. Si no se reinicia o se hace clic en Vista previa, el archivo correspondiente estará vacío.

Solía funcionar bien (incluso el archivo YYYYMMDD.log abierto en el MetaEditor se actualizaba automáticamente en unos segundos después de mostrar las filas en la pestaña Expertos) y no había que realizar ninguna acción extra no evidente

En mi opinión, siempre ha sido así si el tamaño del registro es pequeño (había información en algún lugar del foro sobre el tamaño en el que comienza el volcado de la caché). Siempre he tenido que invocar el menú contextual para inicializar la descarga en el disco.

 
Stanislav Korotky:

En mi opinión, esto siempre ha sido así si el tamaño del registro es pequeño (había información en algún lugar del foro sobre el tamaño en el que se inicia el restablecimiento de la caché). Siempre he tenido que llamar al menú contextual para inicializar la descarga en el disco.

No entiendo muy bien el sentido de tu IMHO. Tomar build <= 1596 (32bit) y comprobar (salidas al archivo .log inmediatamente [5-10 segundos] incluso una línea). Lo he comprobado hace un minuto.

[¿Qué caché? ¿Qué siempre? ¡Había algo sobre algo en alguna parte!]

se trata de la pestaña Expertos y la carpeta MQL5\Logs\

 
A100:
Si eliminas template<typename T> también compilará (incluso con paréntesis)

Bueno, es una frase de la categoría "si quitas todo, se compila".

Estaba hablando de las causas del error exactamente con la plantilla. La razón es el comportamiento incorrecto del compilador al analizar una construcción de plantilla en la situación con paréntesis adicionales. Cualquiera que haya aplicado las plantillas puede ver inmediatamente dónde está el problema y por qué se produce.

 

Hola chicos, tengo una tarea para mostrar dos indicadores iMACD_1 color, línea de señal y iMACD_2 en una ventana separada, aquí está parte del código:

He hecho la indexación

   SetIndexBuffer(0,MACDBuffer_1,INDICATOR_DATA);
   SetIndexBuffer(1,buffer_color_histogram,INDICATOR_COLOR_INDEX);
   SetIndexBuffer(2,Signal_Line,INDICATOR_DATA);
   SetIndexBuffer(3,MACDBuffer_2,INDICATOR_DATA);

Tengo indicadores

 handle_1=iMACD(name,period,fast_ema_period,slow_ema_period,signal_period,applied_price); 
 handle_2=iMACD(name_,period_,fast_ema_period_,slow_ema_period_,signal_period_,applied_price_);

(Y luego se pregunta))

En teoría, debería funcionar para mostrar los indicadores

      if(CopyBuffer(handle_1,0,0,values_to_copy,MACDBuffer_1)<0)return(0);
      if(CopyBuffer(handle_1,1,0,values_to_copy,Signal_Line)<0) return(0);
      if(CopyBuffer(handle_2,3,0,values_to_copy,MACDBuffer_2)<0) return(0);

No funciona.

Pero funciona así

      if(CopyBuffer(handle_1,0,0,values_to_copy,MACDBuffer_1)<0)return(0);
      if(CopyBuffer(handle_1,1,0,values_to_copy,Signal_Line)<0) return(0);
      if(CopyBuffer(handle_2,0,0,values_to_copy,MACDBuffer_2)<0) return(0);

Funciona, no puedo averiguar cuál es el problema con los números de búferes indicadores. ¡¡¡Gracias de antemano !!!

 

Error de compilación.

template<typename T>
struct A {
        static int a1;
        static int a2;
};
template<typename T>
int A::a1;
template<typename T>
int A::a2;
struct B : A<int> {
        void f1() { Print( A<int>::a1 ); } //unresolved static variable 'A<int>::a1'
        void f2() { Print(         a2 ); } //unresolved static variable 'B::a2'
};

Y sintemplate<typename T> - bien

 
vitrix:

Hola chicos, tengo una tarea para mostrar dos indicadores iMACD_1 color, línea de señal y iMACD_2 en una ventana separada, aquí está parte del código:

He hecho la indexación

Tengo indicadores

(Y luego se pregunta))

En teoría, debería funcionar para mostrar los indicadores

No funciona.

Pero funciona así

Funciona, no puedo averiguar cuál es el problema con los números de búferes indicadores. ¡¡¡Gracias de antemano !!!


Por favor, la próxima vez recuerda cómoinsertar el código en el post(tu post lo he corregido).

Segundo: el indicador iMACD sólo tiene dos buffers: "0" - MAIN_LINE, "1" - SIGNAL_LINE. Por lo tanto, para obtener los valores del indicador se verá así:

   CopyBuffer(handle_iMACD,MAIN_LINE или SIGNAL_LINE,index - номер буфера с которого начинаем копирование,values_to_copy,buffer)
 
A100:

Error de compilación.

Y sintemplate<typename T> - bien

template<typename T>
struct A {
        static int a1;
        static int a2;
};
template<typename T>
int A::a1 = 0;
template<typename T>
int A::a2 = 0;
struct B : A<int> {
        void f1() { Print( A<int>::a1 ); } //unresolved static variable 'A<int>::a1'
        void f2() { Print(         a2 ); } //unresolved static variable 'B::a2'
};