Я пишу оболочку для SDL_Texture*
необработанного указателя, который возвращает unique_ptr
.
using TexturePtr = std::unique_ptr<SDL_Texture, decltype(&SDL_DestroyTexture)>;
TexturePtr loadTexture(SDL_Renderer* renderer, const std::string &path) {
ImagePtr surface =
loadImage(path);
if (surface) {
return TexturePtr(
SDL_CreateTextureFromSurface(renderer, surface.get())
, SDL_DestroyTexture);
}
return nullptr;
}
Но выдает следующую ошибку:
no suitable constructor exists to convert from "std::nullptr_t" to "std::unique_ptr<SDL_Texture, void (__cdecl *)(SDL_Texture *texture)>"
Насколько я понимаю, допустимо передавать nullptr вместо unique_ptr. Я попытался передать пустой unique_ptr при последнем возврате:
return TexturePtr();
но вы получите похожую ошибку во время сборки.
Пожалуйста, дайте мне знать, что я здесь делаю неправильно.
ENV:
компилятор: Visual C ++ 14.1