Je vois pas trop ce qu'il y a à détailler.
Pour différer la construction il suffit d'appeler le constructeur sur une zone mémoire brute, qui peut très bien être allouée sur la pile par exemple.
Ce qui signifie alors qu'il ne faut appeler le destructeur explicitement et que si le constructeur a bien été appelé etc. On a d'ailleurs les mêmes problèmes avec l'allocation dynamique.
On peut fortement limiter ces problèmes on enveloppant ça dans une classe qui utilise en plus un booléen pour savoir si la mémoire est initialisée ou pas. C'est ce qu'est boost.optional.
De toutes manières, tu ne devrais pas avoir à différer la construction. Ici le problème c'est parce que tu utilises des tableaux. Utilise std::vector à la place et plus de problème.
Partager