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


  unique_ptr<T, D> u(d):空unique_ptr指向使用Td类型的对象,该对象必须是D类型的对象代替delete


但是,当我尝试提供没有指针对象的deleter函数时,编译器(Visual Studio 2015)抱怨(没有构造函数的实例与参数列表匹配)。如果我给unique_ptr一个指针以及删除器,它将正常工作。
那么,我是在曲解某件事还是这本书是错的?如果这本书是错误的,还有其他方法可以分别为unique_ptr提供指针和删除器吗?

最佳答案

您尝试调用的构造函数不存在。根据MSDN,唯一采用删除器功能的构造函数也采用指针。如果要使用删除器初始化unique_ptr但又不想给它赋值,则可以始终将nullptr作为第一个参数传递,并调用unique_ptr::reset()为其提供指针以供以后管理。

关于c++ - 将删除器提供给unique_ptr,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46918086/

10-10 12:25