我当前正在处理的项目使用的是不支持C ++ 11的较旧的编译器,因此没有unique_ptr或shared_ptr可用。
我应该使用现在不推荐使用的auto_ptr还是应该完全使用智能指针删除?
答案 0 :(得分:7)
如果您可以使用Boost,则has provided shared_ptr
早已在C ++ 11中进行了标准化,因此,合适的旧版本的Boost应该能够在'03-兼容的方式。
答案 1 :(得分:3)
我建议您按计划弃用std::auto_ptr
。
但是我会避免使用裸露的指针。
在C ++ 11之前的版本中,您可以使用Boost(www.boost.org)中提供的智能指针类。失败的话,您可以滚动自己的版本,以期在标准库中可用它们时将其删除。请注意,std::shared_ptr
比std::unique_ptr
更容易实现,在后一种情况下,我认为您必须放弃可移植性,因为它需要 move语义才能正确实现。>
答案 2 :(得分:1)
也许您可以使用std::tr1::shared_ptr
。