Пара вопросов о SDL_Window и unique_ptr

В настоящее время у меня была проблема с хранением указателя SDL_Window как std :: unique_ptr.
То, что я попробовал, было:

std::unique_ptr<SDL_Window> window_;

Решение:

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

Первая попытка продолжала генерировать ошибки в заголовке памяти, говоря, что SDL_Window является неполным типом. Ну, я знаю, что SDL_Window является структурой и не может быть создан с

SDL_Window* window_ = new SDL_Window();

поэтому создание экземпляра выполняется с помощью SDL_CreateWindow (params).

Вопросы:

Почему я не могу вызвать конструктор по умолчанию (или любой другой) для SDL_Window?

Почему unique_ptr нуждается в удалении в этом случае, но не здесь:

renderSystem_ = std::unique_ptr<Renderer::RenderSystem>(new Renderer::RenderSystem());

RenderSystem - это класс с конструктором по умолчанию, деструктором.
Это потому, что unique_ptr может получить доступ к деструктору, который действует как средство удаления и не нуждается в качестве аргумента шаблона?

Заранее спасибо!

Ответы на вопрос(0)

Ваш ответ на вопрос