我有一些库代码(我不能不更改源代码),它返回指向对象 (B) 的指针。我想将此指针存储为具有此类构造函数的类下的shared_ptr:
class A
{
public:
A(boost::shared_ptr<B> val);
...
private:
boost::shared_ptr<B> _val;
...
};
int main()
{
B *b = SomeLib();
A a(b); //??
delete b;
...
}
也就是说,我想对b进行深拷贝,并在a下控制它的生命周期(即使原来的b被删除(删除b),我在a下仍然有一个精确的拷贝)。
我是新手,很抱歉,如果它看起来微不足道......
最佳答案
如果库定义了这个 B 对象,则库应该提供(或完全禁止)复制 B 的机制。
作为旁注,
如果您的 A 类专门控制此复制对象的生命周期,那么您真正想要使用的智能指针是 boost::scoped_ptr
。
boost::shared_ptr
因其分担生命周期责任的能力而命名,这听起来像是您不想要的。 scoped_ptr
不会让这种情况意外发生。
关于c++ - 将指针转换为shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/887524/