Als erste Bemerkung würde ich es nicht ObjectArray
nennen, wenn es eine Karte und kein Array ist.
Wie auch immer, können Sie Objekte auf diese Weise einfügen:
ObjectArray myMap;
myMap.insert(std::make_pair(0, std::unique_ptr<Class1>(new Class1())));
Oder so:
ObjectArray myMap;
myMap[0] = std::unique_ptr<Class1>(new Class1());
Der Unterschied zwischen den beiden Formen ist, dass erstere wird scheitern, wenn der Schlüssel 0
bereits vorhanden ist in der Karte, während der zweite seinen Wert mit dem neuen überschreibt.
In C++ 14, möchten Sie möglicherweise std::make_unique()
anstelle der unique_ptr
aus einem new
Ausdruck verwenden. Zum Beispiel:
myMap[0] = std::make_unique<Class1>();
Die folgende MSDN-Seite hat einige Informationen über diese: http://msdn.microsoft.com/en-us/library/vstudio/hh279676.aspx – yuyang