Maumau_game.h:
#ifndef MAUMAU_GAME_H_
#define MAUMAU_GAME_H_
#include <more_includes>
#include "Player.h"
enum game_status {
STATUS_NONE = 0,
STATUS_DRAW_2 = 1,
};
class Maumaugame_holder {
methods();
};
#endif /* MAUMAU_GAME_H_ */
Player.h:
#ifndef PLAYER_H_
#define PLAYER_H_
#include <vector>
#include "Maumau_game.h"
#include "Card.h"
class Player {
more_methods();
public:
void do_turn(game_status g_status, const Card upper_dropped_card,
Deck& talon); //Error: >>game_status<< not declared
};
#endif /* PLAYER_H_ */
我不知道为什么没有声明枚举game_status。我已正确包含标题,它在范围内,不是吗?我无法在“Player.h”中声明枚举。我会宣布它两次。你能帮我吗?你有什么建议吗?
(我不允许使用C ++ 11)
提前致谢
答案 0 :(得分:7)
问题是循环包含,删除
#include "Player.h"
来自Maumau_game.h
的它应该可行。只包括你需要的东西,并向前宣告你能做的任何事情。
答案 1 :(得分:4)
问题是,您包含的Player.h
包含Maumau_game.h
,其中包含Player.h
,并且最后包括该定义不存在。
解决此问题的一种方法是在Player.h
中转发声明枚举(通过添加行enum game_status
),删除Maumau_game.h
的包含(来自Player.h
)和在game_status g_status
函数中将参数从const game_status& g_status
更改为do_turn
。