gpt4 book ai didi

c++ - 在列表中正确使用 boost::shared_ptr

转载 作者:搜寻专家 更新时间:2023-10-31 01:13:07 28 4
gpt4 key购买 nike

我有一个与 boost::shared_ptr<> 相关的问题在 C++ 中。我目前愿意智能删除列表中的项目:

  • 如果该项目正在使用中,请不要执行任何操作,稍后将其删除
  • 如果该项目未在使用中,请将其删除

这是我的程序要求的行为。

自从 std::list<boost::shared_ptr<object> > 以来,我真的很想知道如何正确地做到这一点删除/删除函数导致删除 shared_ptr<>因此是真实的对象。

所以我终于想到了这个解决方案:使用 std::list<object*>并继承object来自 boost::enable_shared_from_this<> .这样,当有人需要使用列表中的项目时,我给他们 object->shared_from_this() .

我的问题如下:

  • 这会尊重期望的行为吗?
  • boost::shared_ptr<>关联到 shared_from_this()考虑到对列表中对象的引用?

我希望我的问题足够明确,并且有人能够帮助我。在列表中正确使用智能指针是我希望能够使用的东西。

谢谢

最佳答案

当您删除一个shared_ptr 时,您并没有删除真正的对象,除非它没有在其他任何地方使用。这就是使用 shared_ptr 的全部要点。

例如,如果您从列表中取出一个元素,复制它并将其提供给另一个函数,然后从列表中删除该元素,则不会删除真正的对象,因为它仍在其他地方引用。

关于c++ - 在列表中正确使用 boost::shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12986755/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com