我有一个名为SDL_Window
的{{1}}包装类作为我WindowHandler
类中的类成员。我希望在Game
方法中初始化WindowHandler
。但是,该类没有0-param ctor,因此如果我不在初始化列表中初始化Game::init
变量,程序将会中断。有没有办法将初始化延迟到WindowHandler
方法?
答案 0 :(得分:3)
对此的一般解决方案是
unique_ptr<WindowHandler> window;
而不是普通的
WindowHandler window;
成员,然后你可以延迟调用它的构造函数。
void Game::init(int arg) {
window = make_unique<WindowHandler>(arg);
}
它仍会自动销毁。
(我在这里的技术,如果这是一个好的或坏的设计,或者如果它违反了RAII,则超出了当前的范围)。