困倦的程序员(自我评价)需要帮助
#ifndef GAME_H
#define GAME_H
#include <iostream>
#include "snake.h"
#include "food.h"
#define MAX_WIDTH 20
#define MAX_HEIGHT 20
class game
{
public:
game();
static void createBoard();
int gameStart();
bool gameChecker();
protected:
food apple;
bool gameOver = false;
snake python;
int gameSpeed = 250;
private:
};
#endif // GAME_H
以上是名为 game.h
的头文件每当我尝试编译项目时,它会显示错误,上面写着“错误:'食物'没有命名类型”
其中食物是另一类,我也包含在此头文件中
#include 'food.h'
但仍然存在错误。我也试过在游戏的.cpp文件中包含 food.h ,但仍然没有希望。
这是food.h文件以备不时之需
#ifndef FOOD_H
#define FOOD_H
#include "game.h"
#include "snakeFragment.h"
#include <stdlib.h>
#include <time.h>
class food: public snakeFragment
{
public:
food();
int foodPlace();
int printFood();
protected:
char symbol = '*';
private:
};
#endif // FOOD_H
我正在使用Code :: blocks。
我做过的事情
重新分析项目
重建整个项目
再次重写课程
重新启动笔记本电脑
重新启动Code :: blocks
在编译器设置中提供路径 - &gt;搜索目录
但没有效果。我不知道是什么问题?
提前致谢
答案 0 :(得分:0)
你有一个循环依赖。食物包括游戏和游戏包括食物。
由于您已经正确使用了标题保护,而不是无限地互相包含,所以只能将其包含在另一个之前。事实上,游戏的定义首先被包括在内,所以它并不知道食物是一种类型。
解决方案:没有循环依赖关系。食品类似乎没有使用游戏中的任何东西,所以这应该很容易实现。
但是game.h中有一些宏
然后将标题分成小块,这样食物就不再依赖于依赖食物的任何标题。