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

时间:2013-07-26 18:45:48

标签: c++ class inheritance constructor multi-level

我有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#示例来执行此操作)。在一些书籍中通过类继承阅读我只介绍了从基类继承的参数,因为我的样本基类没有参数。

1 个答案:

答案 0 :(得分:1)

  1. 每个课程声明后您都缺少;

  2. 如果您编写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)
    {
        // ..
    }
    
  3. 修改:将术语符号修改为this question