Я решил переписать свой код и заменить все сырые указатели такими же, как умные указатели или ссылки. Тем не менее, я использую шаблон синглтона для некоторых из моих классов (Game, EntityManager, Input …) и не знаю, как инициализировать умные указатели. Проблема в том, что я использую SDL, и мне нужно установить указатель умного указателя.
std::unique_ptr<SDL_Window> window_(SDL_CreateWindow(...), SDL_DestroyWindow);
Это то, как я обычно это делаю, но я не знаю, как это сделать, когда указатели являются частным членом синглтон-класса, и я не могу передать аргументы конструктору класса (например, имя окна, ширина, высота). .).
class Game
{
private:
std::unique_ptr<SDL_Window> window_;
Game();
~Game();
public:
static Game& getInstance();
};
Спасибо за ответы.
Вы все еще можете использовать список инициализатора члена:
Game::Game()
: window_(SDL_CreateWindow(...), SDL_DestroyWindow)
{
}
Других решений пока нет …