
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Faites-vous référence à leur bibliothèque standard? )
Non, je veux dire qu'en MQL vous ne pouvez pas déclarer une méthode virtuelle abstraite sans implémentation. Dans MQL, les méthodes virtuelles d'une classe de base doivent toujours avoir une implémentation, ce qui pose les problèmes que vous avez mentionnés.
Il n'y a pas beaucoup d'interfaces de base en C#
En fait, il y en a beaucoup.
Ce n'est pas tout à fait mauvais, à mon avis. Il n'y a pas tant d'interfaces principales de base en C#, à mon avis (je ne suis pas un spécialiste du C#), que l'on ne puisse pas réduire leurs méthodes à une superclasse de base, puis hériter de ce dont on a besoin.
P.S. Mettre en œuvre quelque chose de multiple à travers des constructions comme <<<<>>>> est un peu casse-gueule. Il est préférable d'utiliser les opérateurs pour les fonctions, par exemple, a==b appelle a.compareto( b ), a[comparer]==b appelle comparer.compare(a,b), etc.A mon avis, ce serait un terrible méli-mélo.
+ L'appel de méthodes virtuelles n'est pas gratuit.Non, je veux dire qu'en MQL vous ne pouvez pas déclarer une méthode virtuelle abstraite sans implémentation. Dans MQL, les méthodes virtuelles d'une classe de base doivent toujours avoir une implémentation, ce qui pose les problèmes que vous avez mentionnés.
Je ne vois pas pourquoi vous ne pouvez pas le déclarer sans l'implémenter ? Les méthodes des classes abstraites sont supportées dans MQL depuis des années.
1. En fait, il y en a beaucoup.
2. à mon avis, ce serait un terrible méli-mélo.
+ L'appel des méthodes virtuelles n'est pas gratuit.1. Je le saurai.
2. Voyons ce qui se passe, si je réussis à faire ce que je fais maintenant, je le posterai sur le forum).
Pas gratuitement, oui. Toute solution OOP universelle s'avère coûteuse, mais si votre objectif est de construire facilement et joliment des conseillers experts et des indicateurs simples (sans fonctionnalités spéciales), alors cela en vaut la peine, à mon avis.
Je ne comprends pas vraiment pourquoi on ne peut pas déclarer sans implémenter ? Les méthodes des classes abstraites sont supportées dans MQL depuis des années.
Parce qu'une entrée comme celle-ci provoquera une erreur de compilation :
Parce qu'une entrée comme celle-ci provoquera une erreur de compilation :
Et la personne pensait qu'il est impossible de déclarer une telle méthode dans MQL, d'après ce que j'ai compris de son message.
Peu de gens le savent (encore moins le savent et l'utilisent), mais lesfonctions purement virtuelles peuvent avoir un corps
Ils doivent également être surchargés dans la classe descendante.
Peu de gens le savent (encore moins le savent et l'utilisent), mais lesfonctions purement virtuelles peuvent avoir un corps
Ils doivent également être surchargés dans la classe descendante.
Les interfaces peuvent donc toujours avoir leur propre code de méthode ? Peut-on l'appeler d'une manière ou d'une autre ? )
Je suis tombé sur ça récemment...
p.s. J'ai essayé maintenant mais... Même si A::f2() n'a pas de corps, le compilateur ne réagit pas à un tel appel. Je dois donc attraper une erreur plus tard dans le runtime. Pas moyen.
Hmm, caractéristique intéressante... Je suppose que c'est une méthode par défaut, juste pour être appelée dans les descendants de A::f2().
Je l'ai testé - vous avez raison en général =)
p.s. Bien que, j'ai essayé maintenant... Même si A::f2() n'a pas de corps, le compilateur ne réagit pas à un tel appel.
Apparemment, c'est un cafard après tout...