所以我在我的Main类中有一个shared_ptr,我想要一些其他对象(一个单例类)来访问shared_ptr所指向的内容。
在伪代码中......
mySingletonInstance->somePointer = myShared_ptr;
我该怎么做?
答案 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
也可能会指向该对象。