Là một nhận xét đầu tiên, tôi sẽ không gọi nó là ObjectArray
nếu đó là bản đồ chứ không phải là một mảng.
Dù sao, bạn có thể chèn đối tượng theo cách này:
ObjectArray myMap;
myMap.insert(std::make_pair(0, std::unique_ptr<Class1>(new Class1())));
Hoặc theo cách này:
ObjectArray myMap;
myMap[0] = std::unique_ptr<Class1>(new Class1());
Sự khác biệt giữa hai hình thức là các cựu sẽ thất bại nếu phím 0
đã có mặt trong bản đồ, trong khi bản đồ thứ hai sẽ ghi đè giá trị của nó bằng giá trị mới.
Trong C++ 14, bạn có thể muốn sử dụng std::make_unique()
thay vì xây dựng unique_ptr
từ biểu thức new
. Ví dụ:
myMap[0] = std::make_unique<Class1>();
Nguồn
2013-06-04 17:19:36
Trang MSDN sau đây có một số thông tin về vấn đề này: http://msdn.microsoft.com/en-us/library/vstudio/hh279676.aspx – yuyang