我有3个彼此派生的类-GameScreen是MenuScreen派生自的基类。然后,我从“ MenuScreen”派生了第三类“ TitleScreen”。
该流程基本上来自基类:'GameScreen'->'MenuScreen'->'TitleScreen'
基类'GameScreen'在其构造函数中没有参数,就像'TitleScreen'一样,但是我需要'MenuScreen'的参数。我目前的头文件为:
游戏画面
class GameScreen
{
public:
GameScreen();
}
MenuScreen.h
class MenuScreen : public GameScreen
{
public:
MenuScreen(std::string title);
}
标题屏幕
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)
{
// ..
}
编辑:将术语协议固定为this question。
关于c++ - 构造函数不一致的多级类继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17888768/