所以我在我的Main類中有一個shared_ptr,並且我希望其他對象(單例類)可以訪問shared_ptr指向的內容。如何指向shared_ptr
在僞代碼...
mySingletonInstance->somePointer = myShared_ptr;
我該怎麼辦呢?
所以我在我的Main類中有一個shared_ptr,並且我希望其他對象(單例類)可以訪問shared_ptr指向的內容。如何指向shared_ptr
在僞代碼...
mySingletonInstance->somePointer = myShared_ptr;
我該怎麼辦呢?
如果單例應該參與由shared_ptr持有的對象的共享管理,那麼它的somePointer可能只是該shared_ptr的一個副本。否則使用weak_ptr。
如果你不想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
可能擁有它的指針已被刪除後,即使對象。
我不認爲這是'weak_ptr <>'的改進,因爲這提供了取消引用已刪除對象的機會。 – ildjarn 2012-02-21 20:29:43
@ildjarn - 這比'weak_ptr <>'的唯一優點是不必調用'weak_ptr :: lock()'。 – 2012-02-21 20:32:12
也許'mySingletonInstance-> somePointer =&(* myShared_ptr)' – 2012-02-21 20:02:09
'weak_ptr'的時間! – ildjarn 2012-02-21 20:02:49
@AshBurlaczenko,但somePointer可以是一個簡單的指針,或者它也必須是shared_ptr? – Pier 2012-02-21 20:08:45