gpt4 book ai didi

c++ - std::make_unique 可以将函数的输出作为参数吗?

转载 作者:行者123 更新时间:2023-11-30 01:34:38 28 4
gpt4 key购买 nike

有没有办法使用 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 失败(没有重载函数的实例与参数列表匹配)

如果没有办法使 loadedSurface3 工作,是否推荐 loadedSurface2 而不是 loadedSurface1 因为它使用 make_unique?

最佳答案

Is there a way to use make_unique and pass the output of a function as a parameter?

std::make_unique<T>使用构造函数参数创建一个新的 T .它不需要 T*到现有的 T .

此外,you can't specify a deleter with it like that .

你的意思很简单:

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

is loadedSurface2 recommended over loadedSurface1 because it uses make_unique?

我看不到任何好处。您所做的只是将您的构造分成两行并丢失删除器。

关于c++ - std::make_unique 可以将函数的输出作为参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55966836/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com