Erreurs, bugs, questions - page 1357
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
Au fait, je ne comprends pas ce code, à quel endroit l'opérateur== sera-t-il appelé ? C'est juste une comparaison de deux longs, c'est tout.
...
IsEqualPointer peut être soit un motif, soit une fonction générale similaire à ::GetPointer
Je ne vous comprends pas du tout, pourriez-vous expliquer en langage humain ce que vous essayez de faire ? Le code donné comporte des erreurs (operator== n'a ni argument, ni valeur de retour), il est difficile de comprendre quelque chose à partir de tout cela.
Laissez-moi vous dire tout de suite que le problème de la comparaison/assignation de pointeurs n'a jamais existé auparavant, GetPointer(a)==GetPointer(b) est suffisant pour cela. La tâche ne concerne donc que la comparaison/assignation des objets eux-mêmes, c'est-à-dire qu'elle est garantie d'effectuer ces opérations que ces objets soient représentés par des pointeurs ou des références
Le code que vous avez donné comporte des erreurs (operator== n'a ni argument ni valeur de retour), il est difficile de comprendre quoi que ce soit à tout cela.
GetPointer(a)==GetPointer(b) provoquera a.operator==( b )
Au fait, pourquoi ne pas introduire les opérateurs * et & dans MQL pour permettre l'accès explicite à un objet dans le premier cas, et la prise d'un pointeur d'objet dans le second (au lieu de l'encombrant GetPointer). L'astérisque est indispensable, et il ne peut être remplacé par rien dans le langage.Sans cela, il est impossible de contrôler des situations comme celle décrite par A100 ci-dessus, lorsqu'au lieu des objets eux-mêmes, des actions de pointeur sont effectuées. Personnellement, c'est un problème constant, je dois être constamment sur le qui-vive ou spécifier A.operator=(B), A.operator!=(B) partout, c'est-à-dire que la brièveté est perdue, et la surcharge des opérateurs devient en fait sans signification.
J'ai déjà soulevé ce problème une fois, mais le sujet est resté bloqué. Finissons-en enfin avec ce problème.
Je suis d'accord avec cela, je vais certainement soulever la question et nous en discuterons.
Pourquoi ça ?
...
Si vous assimilez l'opérateur== à l'opérateur<, le résultat sera également le même.
Vous n'avez même pas vérifié ce que vous suggérez ! Tout comme dans le cas précédent, lorsqu'il y avait des erreurs évidentes dans le code, c'est-à-dire que vous n'avez même pas essayé de le compiler. Vous avez esquissé quelque chose sur une manivelle, quelques pensées de votre part, comme "mangez-le pendant que je suis gentil, sans pitié"... C'est vrai ? Ne faisons pas ce genre de bêtises.
J'ai moi-même constamment comparé les pointeurs et les opérateurs de surcharge, et il ne s'est jamais produit ce dont vous rêvez maintenant. Et maintenant, après avoir vérifié votre code, aucun miracle ne s'est produit, l'opérateur== n'est pas exécuté comme il devrait l'être.
Maintenant, après avoir vérifié votre code, aucun miracle ne s'est produit, l'opérateur== ne démarre pas comme il le devrait.
L'intérêt de la phrase est précisément qu'elle doit être déclenchée.
C'est pour quoi faire ? C'est à l'envers.
Il est plus logique de procéder dans l'autre sens : < et > devraient provoquer la comparaison de pointeurs.
Personnellement, c'est un problème constant pour moi, je dois être toujours à l'affût, ou spécifier A.operator=(B), A.operator!=(B) partout, c'est-à-dire que cela perd en concision et que la surcharge d'opérateurs n'a en fait aucun sens.
J'ai déjà soulevé ce problème une fois, mais le sujet est resté bloqué. Finissons-en enfin avec ce problème.