【发布时间】:2016-03-02 16:13:15
【问题描述】:
我有一个名为WindowHandler 的SDL_Window 包装类作为Game 类中的类成员。最好,我想在我的Game::init 方法中初始化WindowHandler。但是,该类没有 0 参数 ctor,因此如果我不在初始化列表中初始化 WindowHandler 变量,程序将中断。有没有办法延迟Game::init方法的初始化?
【问题讨论】:
-
RAII 的目的是不延迟初始化,而是在创建对象时完成。
-
X-Y问题,为什么要延迟初始化?
-
简单解决方案:不要在
Game类中使用init方法,而是使用构造函数进行初始化。然后,您也可以在其构造函数中初始化Game类的成员。 -
对我来说,初始化
init函数中的所有内容似乎更干净......但如果没有办法解决它,那么我想我会在 ctor 中初始化所有内容 -
违反了RAII。您最终会得到无效的
Game对象,因为它们尚未初始化。这可以通过在 ctor 中进行初始化来避免。为什么单独的方法更“干净”?