构造函数不一致的多级类继承

Multi-level class inheritance with inconsistent constructors

本文关键字:继承 多级 不一致 构造函数      更新时间:2023-10-16

我有三个相互派生的类-GameScreen是MenuScreen派生的基类。然后我有第三个类"TitleScreen",它派生自"MenuScreen"。

流程基本上来自基类:"GameScreen"->"MenuScreen"->"TitleScreen"

基类"GameScreen"的构造函数中没有参数,就像wise的"TitleScreen"一样,但我需要一个"MenuScreen"的参数。我目前的头文件是:

GameScreen.h

class GameScreen
{
public:
    GameScreen();
}

菜单屏幕.h

class MenuScreen : public GameScreen
{
public:
    MenuScreen(std::string title);
}

标题屏幕.h

class TitleScreen : public MenuScreen
{
public:
    TitleScreen(std::string title) : MenuScreen(title);
}

我很难理解的是,这在C++中是否可行(我正在关注游戏状态管理的C#示例)。通过阅读一些书中的类继承,我发现它只涵盖从基类继承的参数,因为我的示例基类没有参数。

  1. 在每个类声明之后都缺少;

  2. 如果您编写TitleScreen(std::string title) : MenuScreen(title),那么您正在定义方法的主体,但主体缺失。。。所以你应该把声明放在你的标题屏幕上。h:

    class TitleScreen : public MenuScreen
    {
    public:
        TitleScreen(std::string title);
    };
    

    然后将构造函数的主体放置到TitleScreen.cpp:

    #include "TitleScreen.h"
    TitleScreen::TitleScreen(std::string title) : MenuScreen(title)
    {
        // ..
    }
    

编辑:根据这个问题修正了术语。