我决定重写代码,用智能指针或引用之类的思想替换所有原始指针。然而,我的一些类(Game、EntityManager、Input…)使用了singleton模式,不知道如何初始化智能指针。问题是我使用SDL,我需要设置智能指针的deletor
std::unique_ptr<SDL_Window> window_(SDL_CreateWindow(...), SDL_DestroyWindow);
这是我通常的做法,但当指针是singleton类的私有成员,并且我不能将任何参数传递给类的构造函数(如窗口名称、宽度、高度…)时,我不知道该怎么做。
class Game
{
private:
std::unique_ptr<SDL_Window> window_;
Game();
~Game();
public:
static Game& getInstance();
};
谢谢你的回答。
您仍然可以使用成员初始值设定项列表:
Game::Game()
: window_(SDL_CreateWindow(...), SDL_DestroyWindow)
{
}