因此,我使用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