C++头文件包含彼此

Chr*_*ndy 2 c++ header

我有2个文件,都包括另一个文件,我得到奇怪的错误.

#ifndef NODE_H
#define NODE_H

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

#ifndef MODEL_H
#define MODEL_H

#include "Node.h"
etc....
#endif
Run Code Online (Sandbox Code Playgroud)

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

Joh*_*web 5

你和之间有一个循环依赖.Nodemodel

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

#include "Node.h"
Run Code Online (Sandbox Code Playgroud)

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

class Node;
Run Code Online (Sandbox Code Playgroud)

......这将允许你拥有Node& node;你的Model class.

或相反亦然.

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