Pio*_*cki 14 c++ smart-pointers shared-ptr unique-ptr
我有一个类A,其字段类型为std::unique_ptr:
class A
{
public:
std::unique_ptr pointer;
// class body
};
Run Code Online (Sandbox Code Playgroud)
在代码中的某个地方,我使用很少的std::shared_ptrs指向同一个对象.现在我想要实现的是std::unique_ptr在我的班级中将所有权转移到这个,这样如果所有的shared_ptrs都将被销毁,只要这个unique_ptr将保持活着,我的对象将保持活着.
我的问题是 - 是否有可能将所有权转移std::shared_ptr到std::unique_ptr,如果是,我该怎么做?
Naw*_*waz 14
逻辑上这样的场景对我来说没有意义.
假设有一段时间可以转移所有权,但只有当你确定只有一个 shared_ptr alives 时才能这样做; 如果是这种情况,那么你仍然可以使用它shared_ptr作为成员A并假装它是unique_ptr.
然后你评论说:
这是真的,我可以
shared_ptr在A类中创建.我想我再次误解了一个概念.我想以这种方式表现它:如果unique_ptr死了,对象本身也会死,即使shared_ptrs仍然指向它,但那是愚蠢的,因为他们不知道对象本身被破坏了,因此它们不会是nullptrs.
在这种情况下,您正在查看错误的智能指针.您可能需要的是什么std::weak_ptr.如果是这样,那么请确保您使用一个std::shared_ptr和所有其他作为std::weak_ptr.