Errores, fallos, preguntas - página 2565

 
Igor Makanu:

No voy a discutir

Me decidí a describir el problema que estamos discutiendo. Por cierto, el comportamiento de MQL se ha vuelto cada vez más similar al de C#, el código no compila

//+------------------------------------------------------------------+
class A
{
private:
   int               count;
public:
                     A():count(0) {}
   static void       inc()        { count++; }

};

A a;
//+------------------------------------------------------------------+
void OnStart()
{
   a.inc(); //code generation error 
   A::inc();
   
}
//_______________________________________________________________________

He implementado el método Inc() - funciona con campos protegidos

si añado un modificador estático - ¿dónde debe dejar de comprobar el compilador? - he decidido que necesito un punto de entrada a un objeto fuera de ámbito?

 
Igor Makanu:

Si ha escrito un método/campo estático o ha aplicado un ::: - no confíe en el compilador

Los errores ocurren. Escribo el código como antes: this, ::, const, static, private, public, protected se ponen donde sea posible.

Lo necesito, en primer lugar, para comprender rápidamente mi código. En segundo lugar, quiero que el compilador me ayude mientras escribo mi código. Me ayuda mucho.


Ayer me enfrenté por primera vez a una situación así. Escribí un código de 5Kb parte del cual fue copiado y pegado de varios fragmentos. Y al compilarlo por primera vez no apareció ni un solo error o advertencia. Me sorprendió.

 
Igor Makanu:

He decidido describir el problema que estamos discutiendo

//+------------------------------------------------------------------+
class A
{
private:
   int               count;
public:
                     A():count(0) {}
   static void       inc()        { count++; } // Здесь ошибка, о которой компилятор сейчас не сообщает.

};
 
Igor Makanu:

Por cierto, el comportamiento de MQL se parece cada vez más a C#, el código no compila

el método inc() - funciona con campos protegidos

si añado un modificador estático - ¿dónde debe dejar de comprobar el compilador? - he tomado la decisión de que necesito un punto de entrada a un objeto fuera de ámbito, ¿verdad?

Su variable de recuento no es estática.

¿Cómo sabe una función estática a qué objeto pertenece esta variable?

 
Koldun Zloy:

Su recuento de variables no es estático.

¿Cómo sabrá una función estática a qué objeto pertenece esta variable?

no es un principio, me refiero a que cualquier implementación de trabajo con métodos estáticos no tendrá un control completo por parte del compilador, y toda la responsabilidad de control recae en el programador

ok, no importa, porque no importa - escribí lo mismo dos veces en un díahttps://www.mql5.com/ru/forum/1111/page2564#comment_13249284

 
Igor Makanu:

Me refiero a que cualquier implementación de métodos estáticos no será totalmente validada por el compilador, y toda la responsabilidad del control recae en el programador

¿Dónde has leído esto?

¿Lo inventaste tú y lo repetiste sin parar?

 
Andrey Barinov:

¿Dónde has leído eso?

¿Te lo has inventado tú y lo has repetido?

No se me ocurrió a mí, es mi opinión... como, en principio, para cerrar todo el trabajo con la estática sólo dentro de la estática como en C # - entonces no habrá preguntas o errores ;)

 
Slava:

Algunas preguntas sobre la plataforma:

1. ¿se añadirá un rango de negociación admisible para los VP a través de MOEX (por ejemplo, EURRUB_TOM)? Ahora mismo es imposible saber con seguridad si se establecerá un límite, ya que no hay acceso a la gama (precios máximos y mínimos posibles). Por favor, añade.

2. ¿Es posible añadir al terminal y al meta-editor un estado de auto-guardado cada N minutos? ¡Muy carente, ya que con una desconexión repentina se vuelve al estado de inicio del programa con pérdida de todos los cambios! ¡Muy estresante!

 

MQ, ¿están de acuerdo con el almacenamiento? Se tarda entre 10 y 20 segundos en confirmar un archivo. Solía ser instantáneo...

Añadido: a veces el commit se cuelga...

 
En el indicador en el gráfico con la herramienta personalizada, al llamar a la función CopyBuffer(con el mango de la máscara habitual para los símbolos reales, por ejemplo, para EURUSD) devuelve el error 4806. El símbolo personalizado se basa en la fórmula XAUUSD/31,1035*USDRUB. El mismo indicador personalizado con la misma configuración funciona bien en un gráfico real (como XAUUSD, GBPUSD, etc). ¿Cuál puede ser el problema?
Razón de la queja: