0

我决定重写我的代码并用智能指针或引用之类的想法替换所有原始指针。但是,我对我的一些类(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();
};

感谢您的回答。

4

1 回答 1

0

您仍然可以使用成员初始化器列表:

Game::Game()
    : window_(SDL_CreateWindow(...), SDL_DestroyWindow)
{
}
于 2013-09-01T14:41:05.760 回答