![]() |
1
3
您在这里的一个类中混合了两个不相关的函数。首先,它充当声明和初始化StateManager和InputSystem成员的语法快捷方式。其次,它声明抽象的create_window函数。 如果您认为应该有一个公共接口-编写一个接口(纯抽象类)。 此外,使用初始化(循环等)方法和事件回调编写类似于OgreManager的自包含类。由于应用程序可以随时创建和初始化这个对象,所以第二个问题会自动解决。 您的设计可能会为创建新的应用程序对象节省几行代码,但代价是使用可能较长的继承行来维护类似于soup的主对象。 使用接口和回调。 P.S.:更不用说,在构造函数中调用虚拟函数并不意味着您可能期望的结果。 |
![]() |
2
2
是的,这是一个很好的设计,也是我自己用的。 对于您的第二个问题,我将从基本构造函数中删除任何可能不适用于派生类的内容。如果Ogre想要创建窗口本身,那么您需要允许它这样做,我认为在CreateWindow中初始化Ogre是没有意义的(这有误导性)。 您可以添加一个初始化呈现系统虚拟方法,但我认为您应该将该任务留给派生类的构造函数。应用程序初始化总是一项棘手的任务,而且非常难以抽象。根据我的经验,最好不要对派生类可能要做的事情做任何假设,并且让它以它想要的任何方式自己完成工作。 也就是说,如果您能想到一些绝对适用于任何可以想到的派生类的东西,那么可以随意地将其添加到基本构造函数中。 |
![]() |
Schadre · C-plus编码错误 2 年前 |
![]() |
Nithin K · 即使类属性的类型正确,也会获取异常 2 年前 |
![]() |
amirreza870 · Python OOP-更改类文本 2 年前 |
![]() |
A_K · 使用cat或打印方法打印部分内容的子集闭包 2 年前 |
![]() |
Mo Fatah · 如何使用Python类打印数独板? 2 年前 |