包含带有层次继承的错误

Include errors with hierarchical inheritance

本文关键字:错误 继承 层次 包含带      更新时间:2023-10-16

我有一个这样的类结构:


实体生物和贴图都是实体
玩家和敌人都是生物

我的问题出现在一个头文件中,其中包括enemy.h和tiles.h。我不太确定问题是什么,但它只会编译正确,如果我不包括一个头。这是我所拥有的一个精简版本。

#include "enemy.h"
#include "tiles.h"
class foo
{
  public:
    list<Entity>* GetTiles();
    list<Entity>* GetEnemies();
  private:
    list<Entity>* tilesList();
    list<Entity>* enemiesList();
}

在我引入enemy.h和敌人函数之前,它可以正常编译。敌人。h包括生物。h包括实体。Tiles.h包含entity.h

我真的不太熟悉#include是如何工作的,但很明显这就是问题所在。我该如何解决这个问题?

为什么不发布编译器输出?我敢肯定,就像大家在评论中提到的那样,已经忘记了include保护——一定要检查的不仅仅是你谈论的文件,还有你包含在其中的每个include头——也许像"utils.h"这样的东西丢失了其他头中包含的保护。