在C ++ Primer 5th Edition的第五版(p.470)中:
unique_ptr<T, D> u(d)
:空unique_ptr
指向使用T
的d
类型的对象,该对象必须是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/