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
¿Te refieres a su biblioteca estándar? )
No, me refiero a que en MQL no se puede declarar un método virtual abstracto sin implementación. En MQL, los métodos virtuales de una clase base deben tener siempre una implementación, lo cual está plagado de los problemas que mencionas.
No hay muchas interfaces básicas en C#
De hecho, hay muchos.
En mi opinión, no todo es malo. No hay tantas interfaces principales básicas en C#, en mi opinión (no soy especialista en C#), como para no poder reducir sus métodos a una superclase básica y luego heredar lo que necesites.
P.D. Implementar algo múltiple a través de construcciones como <<<<>>>> es un poco pesado. Es mejor hacer las funciones a través de operadores, por ejemplo, a==b llama a.compareto( b ), a[comparer]==b llama a comparer.compare(a,b) etc.En mi opinión, sería un terrible batiburrillo.
+ Llamar a métodos virtuales no es gratis.No, me refiero a que en MQL no se puede declarar un método virtual abstracto sin implementación. En MQL, los métodos virtuales de una clase base deben tener siempre una implementación, lo cual está plagado de los problemas que mencionas.
No estoy seguro de por qué no se puede declarar sin aplicación? Los métodos de las clases abstractas han sido soportados en MQL durante años.
1. De hecho, hay muchos.
2. en mi opinión, sería un terrible batiburrillo.
+ La llamada a los métodos virtuales no es gratuita.1. Lo sabré yo.
2. A ver qué pasa, si consigo hacer bien lo que estoy haciendo ahora, lo publicaré en el foro).
No gratis, sí. Cualquier solución OOP universal resulta ser cara, pero si su propósito es construir fácil y bellamente Asesores Expertos e indicadores simples (sin características especiales), entonces vale la pena, imho.
No entiendo muy bien por qué no se puede declarar sin implementar? Los métodos de las clases abstractas han sido soportados en MQL durante años.
Porque una entrada como ésta causará un error de compilación:
Porque una entrada como ésta provocará un error de compilación:
Y la persona pensó que es imposible declarar tal método en MQL en absoluto, por lo que entendí de su post.
Poca gente lo sabe (menos aún los que lo saben y lo usan), perolas funciones puramente virtuales pueden tener un cuerpo
También tienen que ser sobrecargados en la clase descendiente
Poca gente lo sabe (menos aún lo sabe y lo utiliza), pero lasfunciones puramente virtuales pueden tener un cuerpo
También tienen que ser sobrecargados en la clase descendiente
Entonces, ¿las interfaces pueden seguir teniendo su propio código de método? ¿Se puede llamar de alguna manera? )
Me encontré con esto recientemente...
p.d. Sin embargo, lo he probado ahora... Aunque A::f2() no tenga cuerpo, el compilador no reacciona a esa llamada. Es decir, tengo que atrapar un error después en el tiempo de ejecución. No hay manera.
Hmm, interesante característica... Supongo que es un método por defecto, sólo para ser llamado en los descendientes de A::f2().
Lo he probado - tienes razón en general =)
p.d. Aunque ahora lo he probado... Aunque A::f2() no tenga cuerpo, el compilador no reacciona nada a esa llamada.
Aparentemente es una cucaracha después de todo...