Прямая ссылка или объявление в C ++ - PullRequest
4 голосов
/ 08 октября 2008

Как сделать переадресацию ссылок / объявлений в C ++, чтобы избежать обращения к файлам круглых заголовков?

У меня есть защита #ifndef в заголовочном файле, но память говорит мне, что мне нужна эта функция прямой ссылки - которую я использовал раньше> <, но не могу вспомнить как. </p>

Ответы [ 3 ]

15 голосов
/ 08 октября 2008

Вы объявляете класс без его включения. Например:

//#include "Foo.h" // including Foo.h causes circular reference
class Foo;

class Bar
{
...
};
1 голос
/ 09 октября 2008

Я считаю, что правильный термин для того, о чем вы говорите, это «предварительное заявление». «Прямая ссылка» будет немного запутанной.

0 голосов
/ 08 октября 2008

Вы не получите ссылки на файлы круглых заголовков, если у вас есть защита #ifndef. В этом-то и дело.

Прямая ссылка используется, чтобы избежать #include (ing) заголовочных файлов для объектов, которые вы используете только по указателю или по ссылке. Однако в этом случае вы не решаете проблему циклических ссылок, вы просто практикуете хороший дизайн и отделяете файл .h от деталей, которые ему не нужны.

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