Заголовочные файлы C ++, включая друг друга - PullRequest
2 голосов
/ 08 февраля 2012

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

#ifndef NODE_H
#define NODE_H

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

#ifndef MODEL_H
#define MODEL_H

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

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

1 Ответ

5 голосов
/ 08 февраля 2012

У вас есть круговая зависимость между Node и model.

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

#include "Node.h"

... в model.h, forward forward ...

class Node;

... и это позволит вам иметь Node& node; в вашем Model class.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...