Características del lenguaje mql5, sutilezas y técnicas - página 188
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
La pregunta es cómo se puede iniciar un método no estático de una clase con un puntero aunque el objeto de otra clase (CTimer en nuestro caso) sea una propiedad (variable) de la clase.
no.... Por supuesto que puedes pasar un puntero a otro objeto y cambiar el puntero allí para llamar a method.... pero necesitas saber el nombre del método.
ZS: pero escribió ayer, utilizar un ejemplo@fxsaber y heredar, en cada clase será llamado por OnTimer , sólo habrá una clase base en el bucle para comprobar qué temporizador tiene qué intervalo de tiempo, y el lanzamiento del temporizador principal en el método estático implementar
La pregunta es cómo se puede utilizar un puntero para ejecutar un método no estático de una clase aunque el objeto de otra clase (en este caso CTimer) sea una propiedad (variable) de esa clase. ¿Es posible? Me temo que no.
- plantillas
- interfaces
plantillas:
No hay implementación del temporizador en sí, sólo un ejemplo de cómo llamar a una función no estática (escrito directamente en el foro, no lo comprobé)
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
MT5 y Speed en acción
fxsaber, 2020.10.04 11:56
Determina si un programa se está ejecutando en una máquina frenada o no.
La cuestión es cómo ejecutar un método de clase no estático por puntero aunque el objeto de otra clase (en este caso CTimer) sea una propiedad (variable) de esta clase. ¿Y es posible? Me temo que no.
En términos generales, es así:
Puedes descargar la librería desde aquí: https://github.com/sva04091979/STD/tree/TimerEvent. Rama TimerEvent, aún no fusionada con el master.
no.... Por supuesto que puedes pasar un puntero a otro objeto y cambiar el puntero allí para llamar a method.... pero necesitas saber el nombre del método.
ZS: pero escribió ayer, utilizar un ejemplo@fxsaber y heredar, en cada clase será llamado por OnTimer , sólo habrá una clase base en el bucle para comprobar qué temporizador tiene qué intervalo de tiempo, y el lanzamiento del temporizador principal en el método estático implementar
Igor, no entiendo de qué código fxsaber estamos hablando
plantillas:
No hay ninguna implementación del temporizador en sí, sólo un ejemplo de cómo llamar a una función no estática (escrito directamente en el foro, no lo he comprobado)
Gracias. Lo he probado. No sale nada.
En general, se ve así:
La biblioteca puede descargarse desde aquí: https://github.com/sva04091979/STD/tree/TimerEvent. La rama TimerEvent, aún no la he fusionado en el master.
Gracias. Pero tampoco he encontrado cómo ejecutar un método de clase no estático por el puntero.
Parece que no hay solución a este problema en el estado actual del lenguaje MQL5Gracias a todos, pero quizás no he redactado bien la tarea o no he encontrado una solución en su artículo debido a mis escasos conocimientos.
¿Qué necesitas?
Este es un ejemplo de indicador.
El método Timer4(marcado en azul) de la clase CTestTimer es lanzado por el puntero de la clase CTimer(en el bucle del método CTimer:: OnTimer) pasado a la clase CTimer::NewTimer en el momento de la ejecución del constructor cuando se crea el objeto de la clase CTestTimer.
He probado todo. Hay un punto muerto. No hay manera de obtener un puntero a este método. En C++ funciona a través de: typedef void (CTestTimer::*TFun)();
Y hay un extraño error: 'Timer4' - po inter to this function type is not supported yet ('Timer4' - pointer to this function type is not supported yet)
"Por ahora" - como si MQ dejara esta cuestión de lado hasta mejores tiempos.
Igor, no entiendo de qué código fxsaber estamos hablando
https://www.mql5.com/ru/forum/325418/page4#comment_16116740
el valor de este código es.... bueno, puedes crear tu propio objeto dinámico en cualquier parte del código -.... y no te molestes en actualizarla, y se clavará sola cuando salgas del programa
el número de estos temporizadores sólo está limitado por su imaginación... Quería mover un sprite - creó un objeto que se arrastró desde el borde izquierdo de la pantalla a la derecha y se suicidó - por así decirlo, completa autonomía
...demasiado perezoso para escribir un ejemplo, no es una tarea interesante
https://www.mql5.com/ru/forum/325418/page4#comment_16116740
el valor de este código.... bueno, puedes crear tu propio objeto dinámico.... en cualquier parte del código y no te molestes en actualizarlo y cuando salgas del programa, se clavará solo
el número de estos temporizadores sólo está limitado por su imaginación... Quería mover un sprite - creó un objeto que se arrastró desde el borde izquierdo de la pantalla a la derecha y se suicidó - por así decirlo, completa autonomía
...demasiado perezoso para escribir un ejemplo, no es una tarea interesante
Sí, le eché un vistazo rápido.
no lo entendió
Sí, le eché un vistazo rápido.
no entendió ese punto.
No sé por qué el código se ve así ahora, pero debería ser así:
pero no necesitas estos métodos para el temporizador, imho.
ZS: el objeto puede suicidarse así
No sé por qué el código se ve así, pero debería ser así:
pero no necesitas estos métodos para el temporizador, imho.
ZS: El objeto puede suicidarse así
Lo tengo, gracias a ti y a @fxsaber. Lo he guardado en mi hucha.
Pero, por supuesto, no hay respuesta a mi pregunta en este código.