首页 > 解决方案 > 智能指针的语法

问题描述

在此声明中为唯一指针

  std::unique_ptr<SDL_Window, void(*)(SDL_Window*)> window_;

我找不到任何具有这种贬义的资源,所以我的猜测是我们创建了一个指针并将其传递给函数,返回值存储在 window_

标签: c++

解决方案


不,这只是声明变量window_,根本没有初始化它。

您正在寻找的资源在这里

template<
  class T,
  class Deleter = std::default_delete<T>
  > class unique_ptr;

它只是声明一个带有非默认删除器的唯一 ptr:该void(*)(SDL_Window*)部分是函数指针的类型,这意味着在初始化时必须传入正确的删除器函数window_

如果只使用了一个删除函数,最好将其设为仿函数,其中函数是仿函数类型的静态方法,不需要传递给构造函数。


推荐阅读