是否有一种方法可以使用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。