unique_ptr, conteneur et factory
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:
Code:
1 2 3
| class Dum;
typedef std::vector<std::unique_ptr<Dum>> MyContainer; |
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:
1 2 3 4 5
| class DumFactory
{
public:
static std::unique_ptr<Dum> BuildDum();
}; |
Je voudrais pouvoir créer mon conteneur en 2 temps:
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:
Code:
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() ); |
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?