Erreurs, bugs, questions - page 1892
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Le travail d'une bande de roulement.
veuillez expliquer ce qu'est un protecteur en programmation
Oui, voici un exemple qui illustre votre question :
et la sortie :D'abord, nous vérifions le casting non résolu de bas en haut et obtenons NULL. C'est exact.
Ensuite, nous créons un objet CLASS2, nous lui attribuons une référence à sa classe parente (il est important de comprendre ici que l'environnement sait dynamiquement que le type original de l'objet CLASS2 est stocké dans ses méta-informations). Ensuite (pour répondre à votre question), il faut effectuer une conversion dynamique (en vérifiant le droit de conversion en fonction des méta-informations de l'objet source) de la référence CLASS1 à CLASS2.
Nous vérifions le résultat du casting et l'écrivons dans la variable i = 1. Enfin, nous sortons la valeur de i, qui fait référence à l'objet créé à l'origine.
Tout fonctionne correctement et conformément à la spécification (y compris la spécification dynamic_cast dans le C++ lui-même).
Merci pour la clarification, je l'ai un peu compris dans MQL pour la conversion de type ;)) Mais je ne sais pas pourquoi nous avons besoin du dynamic_cast si nous ne pouvons pas lancer de bas en haut de toute façon et que nous pouvons nous passer du dynamic_cast de haut en bas ? Peut-être y a-t-il des subtilités ici et je ne les comprends pas ?
Relisez le code et mon explication, s'il vous plaît.
Il démontre également comment le cast dynamique peut en toute sécurité augmenter le cast de bas en haut en se basant sur les méta-informations de l'objet créé à l'origine. Si un objet a été créé à partir d'un descendant, puis converti en référence à une classe parent, alors, sur la base des méta-informations (l'objet d'origine est en fait un descendant), vous pouvez sans risque convertir cette référence en descendant.
Généralement utilisé lorsque des objets de divers descendants sont empilés dans un tableau/une liste de références à la classe parente, puis récupérés et coulés en toute sécurité vers l'un ou l'autre des descendants. Si la conversion donne NULL, cela signifie que l'objet n'est pas récupéré par le descendant et ne doit pas être traité.
Relisez le code et mon explication, s'il vous plaît.
Il démontre également comment le cast dynamique peut en toute sécurité augmenter le cast de bas en haut en se basant sur les méta-informations de l'objet créé à l'origine. Si un objet a été créé à partir d'un descendant, puis converti en référence à une classe parent, alors, sur la base des méta-informations (l'objet d'origine est en fait un descendant), vous pouvez sans risque convertir cette référence en descendant.
Généralement utilisé lorsque des objets de divers descendants sont empilés dans un tableau/une liste de références à la classe parent, puis récupérés et coulés en toute sécurité vers l'un ou l'autre des descendants. Si la conversion donne NULL, alors l'objet n'est pas récupéré par le descendant et il ne doit pas être traité.
J'ai lu le code, mais ce n'est pas ça :
CLASS2 *my_ptr2=dynamic_cast<CLASS2 *>(my_ptr);
n'est pas analogue à ça :
Je n'arrive pas à saisir toute la subtilité de l'utilisation de dynamic_cast, si ce n'est que lors de l'exécution du code utilisant dynamic_cast nous n'obtiendrons pas d'erreur car dynamic_cast renvoie NULL en cas d'erreur
J'ai lu le code, mais ce n'est pas ça :
n'est pas similaire à celui-ci :
Je n'arrive pas à saisir la subtilité de l'utilisation de dynamic_cast, si ce n'est qu'en exécutant du code utilisant dynamic_cast, nous n'obtiendrons pas d'erreur car dynamic_cast renvoie NULL en cas d'erreur
Je recommande de lire la spécification C++ dymanic_cast sur google.
C'est une chose insignifiante.
Lors de l'attribution de ressources PC en cludes, le jeu"Call of Duty : BlackOpsIII" se plante - 1 agent a été impliqué. La priorité de l'agent était minime - la mémoire consommait 3,5 gigaoctets de 16 - en général il ne devrait pas y avoir de problèmes. Avec des agents non actifs, le jeu s'est déroulé sans problème. Généralement testé sur la compatibilité des agents avec d'autres programmes ?
Pour une raison quelconque, j'ai tout de suite pensé qu'il s'agissait peut-être d'un bug dans le jeu et je l'ai relié aux particularités du travail sur les machines 64 bits lorsque le programme est chargé dans l'espace d'adressage > 4 Go.
Pour une raison quelconque, l'idée est immédiatement venue qu'il y avait peut-être un bug dans le jeu et l'a relié aux particularités du travail sur les machines 64 bits, lorsque le programme est chargé dans l'espace d'adressage > 4 Go.
C'est-à-dire que pour vérifier cette hypothèse, je dois remplir la RAM de plus de 4 gigaoctets et lancer le jeu - j'essaierai quand mon fils y jouera.
qui peut me dire le type de l'ordre souligné ?
s'agit-il déjà d'un achat ou simplement d'une offre, quelle est la valeur de ce type d'ordre ?
Sa durée de vie est de quelques millisecondes, il ressemble à un achat, mais le compte est compensé et il ne peut y avoir deux positions opposées.
ou s'agit-il simplement d'une file d'attente ?