singleton类中的初始化列表

Initialization list in singleton class

本文关键字:初始化 列表 singleton      更新时间:2023-10-16

我决定重写代码,用智能指针或引用之类的思想替换所有原始指针。然而,我的一些类(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)
{
}