向unique_ptr提供删除器

时间:2017-10-24 18:57:52

标签: c++ smart-pointers unique-ptr

在第五版C ++ Primer第5版(p.470)中:

  

unique_ptr<T, D> u(d):空unique_ptr指向使用T的{​​{1}}类型的对象,d必须是D类型的对象,而不是{ {1}}。

但是,当我尝试提供没有指针对象的删除函数时,编译器(Visual Studio 2015)会抱怨(没有构造函数的实例与参数列表匹配)。如果我将delete指针与删除器一起提供,它就可以正常工作。 那么,我是在误解某些东西还是这本书错了?如果这本书出错了,还有其他方法我可以单独为unique_ptr提供指针和删除吗?

1 个答案:

答案 0 :(得分:1)

您尝试调用的构造函数不存在。根据{{​​3}},唯一采用删除函数的构造函数也会使用指针。如果您想使用删除工具初始化unique_ptr但又不想为其提供值,则可以始终将nullptr作为第一个参数传递,并调用MSDN来提供它是一个稍后管理的指针。