Errores, fallos, preguntas - página 2416

 
Andrey Pogoreltsev:

En este caso no es necesario que no haya ambigüedad. Debería ser simplemente el orden en que se aplican los métodos sobrecargados. Es decir, la tarea de la solución de sobrecarga no es crear un dilema, sino elegir el método más adecuado. Si ignoramos el modificador de acceso, se toma el primer método de la tabla o depende de la implementación del compilador, pero no hay ambigüedad.

Esto es lo que pasaría si hubiera 2 métodos con diferentes parámetros de entrada, por ejemplo:

Volviendo a C++, el mismo vector tiene uno:

Así que esta es una situación completamente normal.

Has puesto un ejemplo muy sencillo de escuelas primarias. Parece que no tiene nada que ver con el ejemplo original.


Alexey Navoykov:

En este ejemplo es un método de un objeto no constante, por lo que debe ser llamado, en igualdad de condiciones.

No estaba al tanto de esta regla, gracias.

Si eliminamos el casting y hacemos que el argumento sea de tipo int para ambos métodos, el código compilará normalmente. Por lo tanto, es el casting lo que provoca el cuelgue de MQL. Este casting no debe afectar al código ya que es idéntico.

Parece que la causa del problema es que el compilador no comprueba si el casting de los métodos sobrecargados es idéntico.

 

En general, para resolver este problema (y muchos otros en MQL) es necesario mover uno de los métodos a una clase auxiliar:

class A { };

class _B
{
 protected: 
  A _a[];
 public:        
  const A * operator[](uint i) const { return &_a[i]; }  
};

class B : public _B
{
 public: 
  A * operator[](uint i)       { return &_a[i]; }
};
 
fxsaber:

Has puesto un ejemplo muy sencillo de una escuela primaria. No parece tener nada que ver con el ejemplo original.

Deberías leer el estándar C++ para ver que todo se resuelve con la misma regla que he citado antes.
 
Slava:

Para empezar, en la caché de optimización, tanto en MT5 como en MT4 los parámetros de cadena siempre se han truncado a 63 caracteres.

Cuando se transmiten eventos, la cadena no puede tener más de 63 caracteres tampoco

Así que lo que viene de fuera es limitado

En cuanto a los productos para el usuario final. El vendedor tiene que tener en cuenta las limitaciones. Y si no los conoce, no ha probado su producto lo suficiente antes de venderlo

No se trata de cómo era y es, sino de cómo debería ser, si se quiere estar al día y cambiar a mejor.

 

Me encontré con este problema, al probar un EA, después de configurar los parámetros y pulsar el botón de inicio, la configuración del EA se restablece a los valores predeterminados, ¿cuál podría ser el problema?

En el vídeo un ejemplo

 
Dmitry Melnichenko:

Me encontré con este problema, al probar un EA, después de configurar los parámetros y pulsar el botón de inicio, la configuración del EA se restablece a los valores predeterminados, ¿cuál podría ser el problema?

ejemplo de video

MT5 se restablece a los valores predeterminados en el probador después de ir a la pestaña "Configuración".

Véase el puesto nº 1.

 

Hice una pregunta en un hilo vecino, pero no parece que mucha gente mire allí. Lo duplicaré aquí:

https://www.mql5.com/ru/forum/6343/page1020#comment_11112212

Brevemente: en los futuros (en el probador) se abren y cierran operaciones (por SL/TP), pero siempre con beneficio cero. ¿Puede ser un error en el probador? ¿O se necesita algún tipo de truco?

Вопросы от начинающих MQL5 MT5 MetaTrader 5
Вопросы от начинающих MQL5 MT5 MetaTrader 5
  • 2019.03.26
  • www.mql5.com
Подскажите пожалуйста, такой показатель тестера в жизни реален? И хороший это или плохой результат за год с депо 3000...
 

Error en el compilador. Al compilar (comprobar la sintaxis) un archivo .mqh con este código, no se muestra ningún error. Sólo se muestra al compilar el ejecutable, lo cual es un inconveniente.

class A
{
 public: 
  A(int) {  }
};

class B : public A { };  // Здесь должна быть ошибка  'A' - wrong parameters count

B b;
 
Alexey Navoykov:

Error en el compilador. Al compilar (comprobación de sintaxis) un archivo .mqh con dicho código, no se genera el error, sino sólo al compilar el archivo ejecutable, lo cual es un inconveniente.

Porque un heder no compila en principio :)))

Si se obliga a todo el compilador a compilar un heder, se obtendrán muchos falsos positivos.

PS. El compilador de C++ tampoco se queja si no se utilizan estas clases.
 
Andrey Pogoreltsev:

Porque un heder no compila en principio :)))

Si se obliga a todo el compilador a compilar un heder, se obtendrán muchos falsos positivos.

PS. El compilador de C++ tampoco se quejará si no se utilizan dichas clases.

Soy consciente de que no compila. Me refiero a la comprobación de sintaxis (que en ME también se llama "Compilar"), porque incluso lo especifiqué entre paréntesis en un post anterior. Si ejecutas la comprobación de sintaxis también en el compilador de C++ (a través de la línea de comandos, normalmente), te regañará como un encanto.