Paar Fragen zu SDL_Window und unique_ptr

Ich hatte derzeit ein Problem beim Speichern eines SDL_Window-Zeigers als std :: unique_ptr.
Was ich versucht habe war:

std::unique_ptr<SDL_Window> window_;

Die Lösung

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

Der erste Versuch warf weiterhin Fehler im Speicherheader auf, da SDL_Window ein unvollständiger Typ ist. Nun, ich weiß, dass SDL_Window eine Struktur ist und nicht mit @ instanziiert werden kan

SDL_Window* window_ = new SDL_Window();

daher erfolgt die Instanziierung mit SDL_CreateWindow (params).

Fragen sind:

Warum kann ich den Standardkonstruktor (oder einen anderen) für SDL_Window nicht aufrufen?

Warum braucht der unique_ptr in diesem Fall ein Deleter, aber nicht hier:

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

RenderSystem ist eine Klasse mit nur einem Standardkonstruktor, einem Destruktor.
Ist das so, weil unique_ptr auf den Destruktor zugreifen kann, der als Deleter fungiert und nicht als Template-Argument verwendet werden muss?

Danke im Voraus

Antworten auf die Frage(4)

Ihre Antwort auf die Frage