Bonjour,
j'ai encore un peu de mal avec unique_ptr, et j'ai du mal à articuler mes vieux patterns avec.
Voilà, j'ai un conteneur qui contient des unique_ptr. On va dire que le code est comme suit:
A côté de ça, j'ai une factory qui me construit des objets de type Dum, on va dire que le code est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 class Dum; typedef std::vector<std::unique_ptr<Dum>> MyContainer;
Je voudrais pouvoir créer mon conteneur en 2 temps:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class DumFactory { public: static std::unique_ptr<Dum> BuildDum(); };
1. Je définis sa taille (donc j'alloue la mémoire nécessaire pour les unique_ptr)
2. Je construis chaque élément un par un
Le code devrait donc ressembler à ceci:
Le problème avec le code ci-dessus, si j'ai bien compris, c'est que le swap n'appelle pas le destructeur de Dum, donc je risque d'avoir des fuites mémoire, non?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 MyContainer container(size); for (auto it=container.begin(); it!=container.end(); ++it) // je ne suis pas encore passé au for_each... it->swap( DumFactory::BuildDum() );
Partager