У меня есть 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 # для Game State Management, который делает это). Прочитав наследование классов в некоторых книгах, я имею дело только с параметрами, унаследованными от базового класса, так как в моем базовом классе нет параметров.
Вам не хватает ;
после каждого объявления класса.
Если ты пишешь 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)
{
// ..
}
Изменить: исправлена терминология согласно этот вопрос.
Других решений пока нет …