如何指向shared_ptr

时间:2012-02-21 19:58:45

标签: c++ shared-ptr

所以我在我的Main类中有一个shared_ptr,我想要一些其他对象(一个单例类)来访问shared_ptr所指向的内容。

在伪代码中......

mySingletonInstance->somePointer = myShared_ptr;

我该怎么做?

2 个答案:

答案 0 :(得分:4)

如果单例应该参与shared_ptr持有的对象的共享管理,那么somePointer可以只是该shared_ptr的副本。否则使用weak_ptr。

答案 1 :(得分:0)

如果您不希望mySingletonInstance->somePointer尊重shared_ptr的所有权语义,那么:

class MySingletonClass {
    SomeType* somePointer;
}
shared_ptr<SomeType> myShared_ptr;
...
// Then either of the following lines:
mySingletonInstance->somePointer = mySharedPtr.get();
mySingletonInstance->somePointer = &*mySharedPtr;

但要注意 - 即使删除了对象,您的somePointer也可能会指向该对象。