我有一个类customClass1,它的属性是std::vector<std::shared_ptr<customClass2>>。
如何复制包含指向第一个customClass1元素所指向的对象相同副本的指针的std::vector<std::shared_ptr<customClass2>>对象的副本?
我不想简单地复制向量中包含的指针。我希望实际上复制指针所指向的对象,然后将指向这些新对象的指针存储在我的第二个customClass1对象的向量属性中。
发布于 2016-01-15 19:28:49
您要做的是迭代要复制和创建的向量,这些向量的值与要复制的向量中的基础对象具有相同的值。你可以这样做:
std::vector<std::shared_ptr<customClass2>> original; // this has the data to copy
std::vector<std::shared_ptr<customClass2>> copy;
copy.reserve(original.size()); // prevent reallocations
for (const auto& e : original)
copy.push_back(std::make_shared<customClass2>(*e));如果您正在处理一个多态类型,这将切片对象,因为您有一个指针的基础,所以只有低音部分将被复制。如果使用多态类型,则可以创建virtual克隆函数并使用clone()复制对象。有关此的更多信息,请参见什么是“虚拟构造函数”? on the isocpp.org常见问题
https://stackoverflow.com/questions/34818310
复制相似问题