Ich habe eine Klasse mit einem Array von Scoped-Zeigern auf Objekte, die keinen Standardkonstruktor haben.
Der einzige Weg, den ich gefunden habe, um sie zu "initialisieren", ist swap()
wie folgt zu verwenden:
Das fühlt sich ein wenig ausschweifend und klobig an. Habe ich einen klügeren Weg vermisst?
Das größte Problem besteht darin, dass es keine Möglichkeit gibt, ein Array mit der Liste der Memberinitialisierer hier zu initialisieren.
Vielleicht möchten Sie stattdessen einen speziellen Pointer-Container wie ptr_vector
verwenden :
Eine Lösung: Verwenden Sie boost :: ptr_vector anstelle von Array.
Sie könnten auch Bearbeiten: Ich denke, das funktioniert nicht mit scoped_ptr. std::vector<scoped_ptr>
verwenden und das Array mit push_back
füllen.
Tags und Links c++ boost smart-pointers