可能重复:
Circular dependencies with headers. Using #ifndef and #define
我尝试导入一个头文件,其中包含一个扩展到该头文件中的类的类,但它不起作用:S
TileGrass.h:
#ifndef TILEGRASS_H_
#define TILEGRASS_H_
#include "Tile.h"
class TileGrass : public Tile
{
public:
TileGrass(unsigned char);
};
#endif /* TILEGRASS_H_ */
Tile.h:
#ifndef TILE_H_
#define TILE_H_
class Tile
{
public:
Tile(unsigned char);
unsigned char id;
};
#include "TileGrass.h"
extern Tile* tiles[256];
TileGrass tileGrass = TileGrass(0);
#endif /* TILE_H_ */
这样做会给我一个错误: 错误:'TileGrass'没有命名类型
答案 0 :(得分:1)
乍一看,我看到两个错误:
Tile.h
不需要包含TileGrass.h
- 您只需重新整理文件即可删除包含)TileGrass tileGrass = TileGrass(0);
是一个定义,它位于标题中,因此如果多次包含标题,则会出现多重定义错误。如果您想要全局(重新考虑),则必须使用extern
。