2012-02-08 5 views
2

У меня есть 2 файла, которые оба включают в себя другой файл, и я получаю странные ошибки.Файлы заголовков C++, включая друг друга

#ifndef NODE_H 
#define NODE_H 

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

#ifndef MODEL_H 
#define MODEL_H 

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

Вот мой пример кода того, что я делаю. Может ли кто-нибудь объяснить мне, почему это невозможно или разрешено? И что я должен сделать, чтобы решить эту проблему.

+0

Возможный дубликат [циклическая зависимость между заголовочными файлами] (http://stackoverflow.com/questions/2089056/cyclic-dependency-between-header-files) –

ответ

5

У вас есть circular dependency между Node и model.

Чтобы справиться с этим, вместо того, чтобы ...

#include "Node.h" 

... в model.h, вперед объявить ...

class Node; 

... и это позволит вам в вашем Modelclass.

Или наоборот.

Лучше все еще ... посмотрите, можете ли вы пересмотреть свой дизайн и устранить эту круговую зависимость.

+0

Большое спасибо! –