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.
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.
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.
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:
intoperator<<( ushort ch ) { return ( 1 ); }
intoperator<<( short ch ) { return ( 2 ); }
intoperator<<( 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 ); }
voidOnStart()
{
A a;
Print( a << '5' ); // результат: 2Print( a.f( '5' )); // результат: 5Print( 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.
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")?
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.
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
¿Cuál es su situación?
No puedo reproducir tu situación por una sencilla razón: no tengo un :
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.
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?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.