Errores, fallos, preguntas - página 1032

 
stringo:
Por cierto, ¿a qué te referías al intentar organizar el desplazamiento a la izquierda por 35 (que es el número al que convierte el literal "5")?
Era un ejemplo simplificado al máximo. El objetivo era sobrecargar al operador. Esto le deja con la transformación explícita
 
A100:
Se trata de un ejemplo simplificado al máximo. El objetivo era precisamente sobrecargar al operador. Esto nos deja con una transformación explícita.
Gracias por simplificar el ejemplo. Estas simplificaciones son muy convenientes para los errores de análisis.
 
Otra incoherencia
class A {
public:
        virtual int f() { return ( 1 ); }
};

class B : public A {
public:
        virtual int f() { return ( 2 ); }
};

int g( A& a )
{
        return ( a.f() );
}

void OnStart()
{
        B b;
        Print( g( b ) ); // результат: 1
}
Mientras que una construcción similar en C++ devuelve el resultado: 2, que es lógico porque el objeto es B y no A
 
A100:
Otra inconsistenciaMientras que una construcción similar en C++ devuelve el resultado: 2, lo cual es lógico, porque el objeto es exactamente B, no A
Sí, parece un error, gracias por encontrarlo - definitivamente lo comprobaremos y lo arreglaremos.
 
Los elementos de la votación no se traducen automáticamente.
 
MetaDriver:

¿Cuál es su situación?

No puedo reproducir tu situación por una sencilla razón: no tengo un :

Sí, el error estaba en la descarga del archivo, no en los búferes. Parece que ya ha pasado a mejor vida.
 
Al_key:
Sí, hubo un error en la descarga del archivo, no en los buffers. Ahora parece que ha pasado a mejor vida.

Una pregunta más:

¿Tienes un ejemplo de cómo ejecutar un indicador personalizado en gráficos pequeños (los que tienen objetos y pueden lanzarse encima del gráfico principal)? Yo uso en MT4 los índices de divisas y sería muy chulo verlos en una pequeña ventana móvil de MT5, en lugar de desperdiciar la mitad de la pantalla.

 
La señal copia el trato, pero el volumen es siempre 0,01 y el del vendedor es diferente. ¿Qué debo hacer? Quiero que el volumen sea el mismo que el del vendedor.
 
A100:
Esto es de la Referencia MQL5:

Cualquier carácter único encerrado entre comillas simples o código de carácter ASCII hexadecimal como '\x10' es una constante de carácter y es de tipo ushort.

La pregunta que surge entonces es por qué el compilador no puede distinguir ushort de int - sin especificar explícitamente?
Encontré la razón, resulta que el compilador considera que un solo carácter entre comillas, por ejemplo '5' no es corto, sino corto, como confirma el ejemplo:
class A {
public:
        int operator<<( ushort ch ) { return ( 1 ); }
        int operator<<( short  ch ) { return ( 2 ); }
        int operator<<( int   ch ) { return ( 3 ); }

        int f( ushort ch ) { return ( 4 ); }
        int f( short  ch ) { return ( 5 ); }
        int f( int   ch ) { return ( 6 ); }
};

int h( ushort ch ) { return ( 7 ); }
int h( short  ch ) { return ( 8 ); }
int h( int   ch ) { return ( 9 ); }

void OnStart()
{
        A a;
        Print( a << '5' );  // результат: 2
        Print( a.f( '5' )); // результат: 5
        Print( h( '5' ));   // результат: 8
}

Todo compila, funciona y no requiere especificar conversiones explícitas.

En consecuencia, o bien la descripción no coincide con el compilador, o bien el compilador no funciona de acuerdo con la descripción. Me gustaría una coincidencia.

 

qué puede ser:

error crítico de ejecución 1079902208 en la función OnTick (error desconocido)

pruebas de 2 horas de duración

Merece la pena comprobar si hay herramientas disponibles.