我有一个与boost::shared_ptr<>
C++ 相关的问题。我目前愿意智能删除列表中的项目:
- 如果该项目正在使用中,请不要执行任何操作,稍后将其删除
- 如果该项目未使用,请将其删除
这是我的程序要求的行为。
我真的很想知道如何正确地做到这一点,因为std::list<boost::shared_ptr<object> >
删除/擦除功能会导致shared_ptr<>
实际对象的删除和删除。
所以我终于想出了这个解决方案:使用 astd::list<object*>
并继承object
自boost::enable_shared_from_this<>
. 这样,当有人需要使用列表中的某个项目时,我会给他们object->shared_from_this()
.
我的问题如下:
- 这会尊重期望的行为吗?
boost::shared_ptr<>
关联的 to是否shared_from_this()
考虑到对列表中对象的引用?
我希望我的问题足够明确,并且有人能够帮助我。在列表中正确使用智能指针是我希望能够使用的。
谢谢