gpt4 book ai didi

c++ - 将指针转换为 shared_ptr

转载 作者:行者123 更新时间:2023-11-30 01:32:53 24 4
gpt4 key购买 nike

我有一些库代码(我不能不更改源代码)返回指向对象 (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/

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