Quel est le problème avec ce programme ?
L’erreur :
Quel est le problème avec ce programme ?
L’erreur :
Vous avez besoin de déplacer l' unique_ptr
:
vec.push_back(std::move(ptr2x));
unique_ptr
garantit qu'une seule unique_ptr
container est la propriété de la tenue de pointeur. Cela signifie que vous ne pouvez pas faire des copies d'une unique_ptr
(car alors, les deux unique_ptr
s aurait la propriété), de sorte que vous ne pouvez la déplacer.
Notez, cependant, que c'est une utilisation incorrecte de l' unique_ptr
. Vous ne pouvez pas l'utiliser pour gérer un pointeur vers une variable locale. La durée de vie d'une variable locale est gérée automatiquement: les variables locales sont détruits lorsque le bloc se termine (par exemple, lorsque la fonction renvoie, dans ce cas). Vous avez besoin d'allouer dynamiquement de l'objet:
std::unique_ptr<int> ptr(new int(1));
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.