gpt4 book ai didi

持有指针的对象的c++ vector

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:28 26 4
gpt4 key购买 nike

struct Obj
{
Obj(P *p, int i): m_p(p), m_info(info) {}
std::auto_ptr<P> m_p;
int m_info;
};

std::vector<Obj> objects; // error C2558: struct 'Obj' : no copy constructor available...

这里的问题在于auto_ptr , 我猜。大家都知道推是坏事auto_ptr放入容器中,推那些持有auto_ptr的人也是不好的放入容器中。我没有 m_info字段,我会使用 boost::ptr_vector<P> objects

您建议如何解决?

最佳答案

您可以自己管理原始指针(在构造函数中分配,在析构函数中释放并实现复制语义 - 符合 RAII)或将指针类型从 std::auto_ptr 更改为 std::shared_ptr/boost::shared_ptr/别的。

关于持有指针的对象的c++ vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13528992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com