Come prima osservazione, non lo chiamerei ObjectArray
se si tratta di una mappa e non di un array.
In ogni caso, è possibile inserire gli oggetti in questo modo:
ObjectArray myMap;
myMap.insert(std::make_pair(0, std::unique_ptr<Class1>(new Class1())));
O in questo modo:
ObjectArray myMap;
myMap[0] = std::unique_ptr<Class1>(new Class1());
La differenza tra le due forme è che il primo non riuscirà se la chiave 0
è già presente nella mappa, mentre il secondo sovrascriverà il suo valore con quello nuovo.
In C++ 14, è possibile utilizzare std::make_unique()
invece di costruire unique_ptr
da un'espressione new
. Per esempio:
myMap[0] = std::make_unique<Class1>();
fonte
2013-06-04 17:19:36
la seguente pagina MSDN ha qualche informazione su questo articolo: http://msdn.microsoft.com/en-us/library/vstudio/hh279676.aspx – yuyang