MQL5 Le compilateur ne fait pas la distinction entre une classe et un pointeur vers celle-ci - page 2
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
C'est ce que j'attendais de la copie... Le constructeur de copie par défaut n'est pas une erreur.
MaisDmitry dit qu'un nouvel objet sera alloué en mémoire et qu'un pointeur de typePOINTER_AUTOMATIC sera renvoyé.
Chacun comprend les bizarreries de MQL à sa manière).
Yep. Il s'avère qu'il n'y a pas de Père Noël.
Je n'ai pas écrit sur un objet en mémoire.
D'accord, il y avait autrefois des disputes sur la façon de distinguer une référence d'un pointeur. Mais maintenant il semble que nous ne pouvons pas distinguer un objet d'un pointeur.
D'où vient la copie d'un objet ? Une copie d'un pointeur, oui, mais pointant vers le même objet.
Nous avons un tableau d'objets. Un opérateur d'affectation est appelé sur le premier élément de ce tableau, qui est passé à l'objet créé séparément (bien que l'opérateur ne soit pas déclaré). Que pensez-vous qu'il devrait y avoir dans le premier élément du tableau après cela ? A mon avis, l'objet doit rester.
Ce que je veux dire, c'est qu'un constructeur de copie explicitement déclaré ne changerait rien à ce test.
Comment pouvez-vous ne pas voir l'évidence...
Un élément de tableau d' objets contient un pointeur et un objet dans l'élément de tableau de pointeurs... est-ce vraiment normal ?
Dans le premier cas, un pointeur d'objet va dans le tableau ; dans le second cas, le constructeur de copie devrait fonctionner, comment ces opérations peuvent-elles être équivalentes ?
Pas le constructeur de copie, mais l'opérateur d'affectation, mais ce sont les petites choses.
C'est l'objet qui doit être placé dans un élément d'un tableau d'objets.
Dans le premier cas - vous avez exactement un tableau d'objets, quel genre de "pointeurs" ?
Nous avons un tableau d'objets. L'opérateur d'affectation est appelé au premier élément de ce tableau et l'objet créé séparément lui est passé. A votre avis, que devrait être le premier élément de ce tableau après cela ? A mon avis, l'objet doit rester.
А... Ce n'est pas bon du tout là-bas)))) Tableau de pointeurs automatiques, et dans celui-ci se trouve également l'objet créé dynamiquement. Ensuite, il y a 3 objets, deux d'entre eux seront automatiquement supprimés et un fuira. S'il est compilé.
Ça devrait être comme ça :
A* m_A[2];
et ainsi de suite :
m_A[0] =GetPointer(a);
Et à la fin, ça se passe comme ça :
А... Ce n'est pas bon du tout là-bas)))) Un tableau de pointeurs automatiques, et on y trouve aussi un objet créé dynamiquement.
Enfin !))
C'est l'objet qui doit être placé dans l'élément du tableau d'objets.
Dans le premier cas - vous avez exactement un tableau d'objets, quels "pointeurs" ?
C'est ce que je veux dire ! Pourquoi ça marche ? !
Enfin !))
C'est ce que je veux dire ! Pourquoi ça marche ? !
Si A est déclaré tel :
A* m_A[2];
Alors, c'est bon.
Et si c'est comme ça :
A m_A[2];
Il ne devrait pas compiler. Soit il y a un bug dans le compilateur, soit le compilateur ne doit pas penser pour tout le monde.
Alors il ne devrait pas compiler. Soit il y a un bug dans le compilateur, soit le compilateur ne doit pas penser pour tout le monde.
Bingo !