我有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/

10-10 12:47