如果只有std :: auto_ptr可用,我还应该使用智能指针吗?

时间:2018-09-28 10:24:40

标签: c++ smart-pointers

我当前正在处理的项目使用的是不支持C ++ 11的较旧的编译器,因此没有unique_ptr或shared_ptr可用。

我应该使用现在不推荐使用的auto_ptr还是应该完全使用智能指针删除?

3 个答案:

答案 0 :(得分:7)

如果您可以使用Boost,则has provided shared_ptr早已在C ++ 11中进行了标准化,因此,合适的旧版本的Boost应该能够在'03-兼容的方式。

答案 1 :(得分:3)

我建议您按计划弃用std::auto_ptr

但是我会避免使用裸露的指针。

在C ++ 11之前的版本中,您可以使用Boost(www.boost.org)中提供的智能指针类。失败的话,您可以滚动自己的版本,以期在标准库中可用它们时将其删除。请注意,std::shared_ptrstd::unique_ptr更容易实现,在后一种情况下,我认为您必须放弃可移植性,因为它需要 move语义才能正确实现。

答案 2 :(得分:1)

也许您可以使用std::tr1::shared_ptr

tr1: C++ Technical Report 1 - Wikipedia