当前位置:  开发笔记 > 编程语言 > 正文

使所有共享ptrs无效到特定的托管对象

如何解决《使所有共享ptrs无效到特定的托管对象》经验,为你挑选了1个好方法。

在C++ 11中,是否有可能拥有由几个std::shared_ptrs 管理的对象.我想通过一个删除对象std::shared_ptr并使另一个shared_ptrs无效(设置为空或null),这可能吗?如果没有,通知所有其他"引用"(在自由使用的单词中)该对象不再有效的最佳方法是什么?



1> Dan..:

要做到这一点,其他shared_ptrs必须用weak_ptrs 替换.的shared_ptr,做的缺失是一个实际管理对象的生命周期在这种情况下.在这一点上值得弄清楚你是否真的需要共享所有权语义.一般来说,如果你发现自己试图做一些界面不允许你做的事情,那就表明你需要一些具有不同语义的东西.

或者,如果你真的无法从一个地方管理对象的生命周期,你可以使用shared_ptr>,但这更麻烦(更不用说慢)并且最好避免.在这里你可以通过reset内部删除对象unique_ptr.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有