因此,我使用boost :: shared_ptr來提供它提供的各種引用計數優點 - 顯然對初學者有引用計數,但也有複製,分配和存儲在STL Containers中的能力。如何防止任何人竊取我的shared_ptr?
問題是,如果我將它傳遞給一個「惡意」函數或對象,對象可以保存ptr,然後如果沒有外函數或對象很好地放棄它,我將永遠無法取消它的分配所有權。
最終,我儘量保持對象所有權的明確。我通過讓所有者將唯一的shared_ptr保存到對象來實現這一點,而「guest」對象僅將weak_ptrs存儲到對象。
我真的不想shared_ptr的「共享」部分,但我需要使用shared_ptr來使weak_ptrs。我想使用scoped_ptr,但由於無法複製,所以它非常有限。您不能將其存儲在容器中,不能將weak_ptrs借出,並且無法將所有權轉讓給新的經理。
解決方案是什麼?
這就是分享的問題,是不是:( – Cascabel 2010-04-22 06:03:00
請注意,任何有'weak_ptr'的人都可以'鎖定'它,所以他們總是可以試圖竊取它,即使你永遠不會給他們所有權 – MSalters 2010-04-22 08:53:40