C ++头文件包含彼此

时间:2012-02-08 10:54:07

标签: c++ header

我有两个文件,包括另一个文件,我得到了奇怪的错误。

#ifndef NODE_H
#define NODE_H

#include "model.h"
etc....
#endif

#ifndef MODEL_H
#define MODEL_H

#include "Node.h"
etc....
#endif

这是我正在做的事情的示例代码。有人可以向我解释为什么这是不可能的或允许的吗?我应该做些什么来解决这个问题。

1 个答案:

答案 0 :(得分:5)

Nodemodel之间有circular dependency

要解决这个问题,而不是......

#include "Node.h"

...在model.h中,转发声明......

class Node;

...这样您就可以在Node& node; Model中拥有class

反之亦然。

更好的是......看看你是否可以重新审视你的设计并消除这种循环依赖。