0

可能重复:
带有标题的循环依赖项。使用 #ifndef 和 #define

我尝试导入一个头文件,其中包含一个扩展至该头文件中的类的类,但它不起作用:S

瓷砖草.h:

#ifndef TILEGRASS_H_
#define TILEGRASS_H_

#include "Tile.h"

class TileGrass : public Tile
{
    public:
        TileGrass(unsigned char);
};

#endif /* TILEGRASS_H_ */

瓷砖.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'没有命名类型

4

1 回答 1

1

乍一看,我看到两个错误:

  • 一个不必要的循环包含(Tile.h不需要包含TileGrass.h- 您可以重新组织文件以删除包含)
  • TileGrass tileGrass = TileGrass(0);是一个定义,它在一个标题中,所以如果你多次包含标题,你会得到一个多重定义错误。如果你想要一个全局(重新考虑),你必须使用extern.
于 2013-01-07T19:45:26.713 回答