Can std :: make_unique将功能的输出作为参数



是否有一种方法可以使用make_unique并将函数的输出作为参数传递?

auto loadedSurface1 = std::unique_ptr<SDL_Surface,SurfaceDeleter>(IMG_Load(path.c_str()));
auto loadedSurface2 = std::make_unique<SDL_Surface, SurfaceDeleter>();
loadedSurface2.reset(IMG_Load(path.c_str()));
auto loadedSurface3 = std::make_unique<SDL_Surface, SurfaceDeleter>(IMG_Load(path.c_str())));

surfacedeleter是函子。

LOADEDSURFACE1和LOADEDSURFACE2都可以正常工作。LOADEDSURFACE3失败(无载函数的实例与参数列表匹配(

如果无法使加载surface3起作用,则在加载surface2上加载了suredsurface1,因为它使用make_unique?

有没有一种方法可以使用make_unique并将函数的输出作为参数传递?

std::make_unique<T>获取构造函数参数来创建一个新的 T。它不需要T*到现有的T

此外,您无法与此类指定deleter。

您的意思是:

std::unique_ptr<SDL_Surface, SurfaceDeleter> loadedSurface3{IMG_Load(path.c_str())};

在LoadedSurface1上推荐加载surface2,因为它使用make_unique?

我在那里看不到任何好处。您所取得的一切就是将您的施工分成两行并丢失了deleter。

相关内容

  • 没有找到相关文章

最新更新