the*_*ill 8 c++ smart-pointers shared-ptr
我想要一个非引用计数的智能指针,可以结合一些的有用的方面auto_ptr和shared_ptr.我认为C++ 0x unique_ptr最终是我需要的,但我需要能在Visual Studio 2008和Xcode(gcc 4.2)上编译的东西.
我需要的功能是:
release()(如auto_ptr)所以,我想这真的更好auto_ptr.是否有任何东西在提升或其他地方做到这一点(注意:我没有时间把我的头包裹在Loki周围)?或者我应该自己动手?
编辑:我刚刚阅读了更多关于auto_ptr- 如果你确保每个.cpp文件中都包含类标题,你可以使用前向声明,如果你用智能指针引用标题(例如参见GotW).有人对此有任何一般性建议或经验法则吗?
EDIT2:shared_ptr不可接受的原因是因为我需要一个release()方法,因为我通过引入工厂方法来整理一些遗留代码,但它必须与一些手动指针所有权代码共存.在整个代码库中使用shared_ptr会很棒,但这是一项艰巨的任务.
编辑3:最后,auto_ptr一旦我发现前向包含的怪癖,就足够了.尝试编写自定义删除器shared_ptr以允许可选地删除指针也会很有趣.
编辑:在我的原始答案中,我无法理解boost::shared_ptr您不能接受(可能出于性能原因).
auto_ptr如你所知,支持前瞻性声明.您需要在可能破坏该引用的对象的那些位置包含引用类的头auto_ptr.但请注意,语义auto_ptr略显古怪,需要一些小心.
以下问题的答案包含更多信息,包括为什么unique_ptr只能为C++ 0x实现的原因,因为它需要rvalue引用:
| 归档时间: |
|
| 查看次数: |
1617 次 |
| 最近记录: |