【发布时间】:2019-09-27 11:19:13
【问题描述】:
我得到了一个接口 (game_manager),我可以编写方法的主体,但不能向其中添加任何内容。我需要从接口获取我的超类输入。
我有一个名为 Game 的超类,它继承自 game_manager。
game_manager.h:(界面)
class game_manager
{
public:
void add_team_A_goalkeeper(int stamina, int dribble, int pass, int defend);
void add_team_A_defender(int stamina, int dribble, int pass, int defend);
void add_team_A_striker(int stamina, int dribble, int pass, int defend);
void add_team_B_goalkeeper(int stamina, int dribble, int pass, int defend);
void add_team_B_defender(int stamina, int dribble, int pass, int defend);
void add_team_B_striker(int stamina, int dribble, int pass, int defend);
void play();
string get_result();
private:
};
类游戏:
class Game : public game_manager
{
private:
bool Awin;
bool Bwin;
std::string result;
GoalKeeper AGoalKeeper;
Defender ADefender;
Striker AStriker;
GoalKeeper BGoalKeeper;
Defender BDefender;
Striker BStriker;
public:
void add_team_A_goalkeeper(int stamina, int dribble, int pass, int defend);
void add_team_A_defender(int stamina, int dribble, int pass, int defend);
void add_team_A_striker(int stamina, int dribble, int pass, int defend);
void add_team_B_goalkeeper(int stamina, int dribble, int pass, int defend);
void add_team_B_defender(int stamina, int dribble, int pass, int defend);
void add_team_B_striker(int stamina, int dribble, int pass, int defend);
void play();
std::string get_result();
void handle_encounter();
};
主要:
#include "game_manager.h"
int main()
{
game_manager game = game_manager();
game.add_team_A_goalkeeper(100, 10, 20, 65);
game.add_team_A_defender(100, 20, 60, 80);
game.add_team_A_striker(100, 70, 50, 30);
game.add_team_B_goalkeeper(100, 50, 40, 50);
game.add_team_B_defender(100, 85, 20, 90);
game.add_team_B_striker(100, 50, 20, 10);
game.play();
std::cout << game.get_result();
}
当我创建一个 game_manager 对象时,我希望它从 Game 中创建一个对象并从 Game 类中调用被覆盖的方法。 不知道怎么实现。
现在我收到此错误:
/tmp/ccN3ZkwD.o: In function `main':
game.cpp:(.text+0x1635): undefined reference to `game_manager::add_team_A_goalkeeper(int, int, int, int)'
collect2: error: ld returned 1 exit status
【问题讨论】:
-
我不太明白。当你想要
Game时,为什么要创建game_manager? -
说实话我也不知道为什么我需要这样做。在高级编程课程中,他们要求实现一个接口,因此,如果他们用测试 main 更改 main,程序仍然可以工作。 API编程的某种介绍。他们提供了游戏管理器标题。
-
试试
game_manager game = Game(); -
@KorelK 我仍然收到“未定义的引用”错误
-
@M12421K 你有一个
Game.cpp文件,其中包含Game.h中的函数的实现吗?并且你在main.cpp#include "Game.h"中添加了吗?
标签: c++ oop inheritance interface