具有不一致构造函数的多级别类继承
我有3个派生自另一个类的类 - GameScreen是MenuScreen派生自的基类。然后我有一个来自'MenuScreen'的第三类'TitleScreen'。具有不一致构造函数的多级别类继承
的流程基本上从基类:“GameScreen” - >“MenuScreen” - >“TitleScreen”
基类的GameScreen'具有在它的构造没有参数,如明智与“TitleScreen”,但是我需要一个'MenuScreen'的参数。我现在有头文件为:
GameScreen.h
class GameScreen
{
public:
GameScreen();
}
MenuScreen.h
class MenuScreen : public GameScreen
{
public:
MenuScreen(std::string title);
}
TitleScreen.h
class TitleScreen : public MenuScreen
{
public:
TitleScreen(std::string title) : MenuScreen(title);
}
我有困难想什么理解是否这是可能的C++(我正在追踪一个C#样本的游戏状态管理这样做)。通过一些书中的类继承来阅读,我只有覆盖从基类继承的参数,因为我的示例基类没有参数。
您在每个类声明后缺少
;
。-
如果你写你所定义的方法体
TitleScreen(std::string title) : MenuScreen(title)
但身体缺少...所以你应该把只是声明你的TitleScreen.h:class TitleScreen : public MenuScreen { public: TitleScreen(std::string title); };
,然后将身体构造函数TitleScreen.cpp:
#include "TitleScreen.h" TitleScreen::TitleScreen(std::string title) : MenuScreen(title) { // .. }
编辑:固定的术语accordint到this question。
您在声明和定义术语混淆。另外值得一提的是,两者可以像C#一样放在一起,或者像你的例子那样分开,可能有利弊。 – 2013-07-26 18:56:33
感谢您的澄清! –
是的,它的工作原理与您所写的完全相同 - 除了您应该在实际实现中调用MenuScreen构造函数,而不是在构造函数的声明中调用。 – jlahd