Пара вопросов о 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 может получить доступ к деструктору, который действует как средство удаления и не нуждается в качестве аргумента шаблона?
Заранее спасибо!