我有3个相互派生的类 - GameScreen是从中派生MenuScreen的基类。然后我有一个第三类'TitleScreen',它来自'MenuScreen'。
流程基本上来自基类:'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#示例来执行此操作)。在一些书籍中通过类继承阅读我只介绍了从基类继承的参数,因为我的样本基类没有参数。
答案 0 :(得分:1)
每个课程声明后您都缺少;
。
如果您编写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)
{
// ..
}
修改:将术语符号修改为this question。