10
votes

Écrire une copie profonde - Valeur du pointeur de copie

En écrivant un constructeur de copie pour une classe qui contient un pointeur pour une mémoire allouée de manière dynamique, j'ai une question.

Comment puis-je préciser que je veux que la valeur du pointeur du pointeur de l'objet copié à partir de l'objet à copier pointeur de la copie à l'objet. Évidemment quelque chose comme ça ne fonctionne pas ... xxx

car, le but de la barre est supprimé (le but de copier l'objet en premier lieu), et ceci juste A la copie à la FOO de l'objet au même endroit.

Quelle est la solution ici? Comment puis-je prendre la valeur de la mémoire allouée de manière dynamique et la copier à une adresse différente?


3 commentaires

La question n'a aucun sens. S'il vous plaît essayez de le reformuler, éventuellement publier davantage de code qui illustre ce que vous demandez.


Besoin de plus d'informations: le type de foo serait bon. Tout autre membre. Une explication de la raison pour laquelle vous n'utilisez pas un pointeur intelligent?


Cela traite du tableau mais peut être utile: Stackoverflow.com/Questtions/255612/...


3 Réponses :


1
votes

Je ne vois pas le contexte, mais le code que vous avez posté ne semble pas être copié le pointeur, c'est exactement ce que vous demandez - copier tout ce qu'il pointe. À condition que FOO pointe sur l'objet attribué.


0 commentaires

19
votes

Vous allouez un nouvel objet xxx


0 commentaires

2
votes

Je suppose que votre classe ressemble à ceci. xxx pré>

Pour effectuer une copie profonde, vous devez créer une copie em> de l'objet référencé par "bar.foo". En C ++, vous le faites simplement en utilisant l'opérateur neuf code> pour invoquer le constructeur de copie de la classe FOO: p> xxx pré>

Remarque: cette solution délégués EM> La décision de savoir si le constructeur de copie nouveau FOO (ConstFoo &) fait également une copie profonde à la mise en œuvre de la classe FOO ... Pour la simplicité, nous supposons que la «bonne chose»! P>

[Note ... La question telle que écrite est très déroutante - il demande la «valeur du pointeur de l'objet copié» qui ne ressemble pas à une copie profonde pour moi: cela ressemble à une copie peu profonde, c'est-à-dire que cela . P>

Bar(const Bar & bar)
{
    this.foo = bar.foo;
}


0 commentaires