我有一个类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_ptr
到std::unique_ptr
,如果是,我该怎么办呢?
按道理这样的情景没有意义了我。
假设了一会儿,这是可能的所有权转让,但你能做到这一点,只有当你确信只有一个 shared_ptr
有效指示; 如果是这样的话,那么你仍然可以使用shared_ptr
的成员A
, 假装是unique_ptr
。
然后你说:
这是真的,我可以创建shared_ptr
一个类。 我想,我又有点误解的概念。 我想表现它是这样的:如果unique_ptr
模具,对象本身太死,即使shared_ptr
仍然指向它,但是这是愚蠢的,因为他们不知道自己被销毁的对象,因此他们不会nullptr
秒。
在这种情况下,你看在错误的智能指针。 你可能需要调用std::weak_ptr
。 如果是这样,那么请确保您使用一个std::shared_ptr
和所有其他的std::weak_ptr
。