Вопрос

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

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

Это было полезно?

Решение

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

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

class Bar
{
...
};

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top