在这个唯一指针的排序中
std::unique_ptr<SDL_Window, void(*)(SDL_Window*)> window_;
我找不到任何具有这种描述的资源,所以我的猜测是,我们创建一个指针并将其传递给函数,返回值存储在window_中
window_
,它根本没有初始化它。
您正在寻找的资源在这里:
template<
class T,
class Deleter = std::default_delete<T>
> class unique_ptr;
它只是用一个非默认的deleter声明一个唯一的ptr:void(*)(SDL_Window*)
部分是函数指针的类型,这意味着在初始化window_
时必须传入正确的deleter函数。
如果只使用了一个deleter函数,最好将其设为函子,因为该函数是函子类型的静态方法,不需要传递给构造函数。
我找不到任何具有这种降级的资源
这是一个变量声明。变量的类型为std::unique_ptr<SDL_Window, void(*)(SDL_Window*)>
,变量的名称为window_
。更具体地说,变量是默认初始化的,在std::unique_ptr
等非平凡类型的情况下,这意味着将调用默认构造函数。std::unique_ptr
的默认构造函数将自己初始化为空指针。