从移动的std :: shared_ptr的性病::的unique_ptr所有权(Move owne

2019-07-21 08:15发布

我有一个类A具有类型的字段std::unique_ptr

class A
{
public:
   std::unique_ptr pointer;
// class body
};

而在代码的某个地方,我用几std::shared_ptr S的指向同一个对象。 现在我想达成的目标是将所有权转让给该std::unique_ptr在我的课,所以,如果所有shared_ptr旨意被摧毁,我的对象将留只要活着,因为这unique_ptr会活下去。

我的问题是-是否有可能摆脱所有制std::shared_ptrstd::unique_ptr ,如果是,我该怎么办呢?

Answer 1:

按道理这样的情景没有意义了我。

假设了一会儿,这是可能的所有权转让,但你能做到这一点,只有当你确信只有一个 shared_ptr有效指示; 如果是这样的话,那么你仍然可以使用shared_ptr的成员A假装unique_ptr

然后你说:

这是真的,我可以创建shared_ptr一个类。 我想,我又有点误解的概念。 我想表现它是这样的:如果unique_ptr模具,对象本身太死,即使shared_ptr仍然指向它,但是这是愚蠢的,因为他们不知道自己被销毁的对象,因此他们不会nullptr秒。

在这种情况下,你看在错误的智能指针。 你可能需要调用std::weak_ptr 。 如果是这样,那么请确保您使用一个std::shared_ptr和所有其他的std::weak_ptr



文章来源: Move ownership from std::shared_ptr to std::unique_ptr