首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建shared_pointers向量的元素指向的对象的副本

创建shared_pointers向量的元素指向的对象的副本
EN

Stack Overflow用户
提问于 2016-01-15 19:23:55
回答 1查看 1.4K关注 0票数 0

我有一个类customClass1,它的属性是std::vector<std::shared_ptr<customClass2>>

如何复制包含指向第一个customClass1元素所指向的对象相同副本的指针的std::vector<std::shared_ptr<customClass2>>对象的副本?

我不想简单地复制向量中包含的指针。我希望实际上复制指针所指向的对象,然后将指向这些新对象的指针存储在我的第二个customClass1对象的向量属性中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-15 19:28:49

您要做的是迭代要复制和创建的向量,这些向量的值与要复制的向量中的基础对象具有相同的值。你可以这样做:

代码语言:javascript
复制
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常见问题

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34818310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档