Прямая ссылка или объявление в C ++
-
06-07-2019 - |
Вопрос
Как сделать переадресацию ссылок / объявлений в C ++, чтобы избежать циклических ссылок на заголовочный файл?
В заголовочном файле у меня есть защита #ifndef, но память подсказывает мне, что мне нужна эта функция прямой ссылки, которую я использовал раньше > < но не помню как. Р>
Решение
Вы объявляете класс без его включения. Например:
//#include "Foo.h" // including Foo.h causes circular reference
class Foo;
class Bar
{
...
};
Другие советы
Я полагаю, что правильный термин для того, о чем вы говорите, это & "предварительное объявление &" " прямая ссылка " было бы немного запутанным.
Вы не получите ссылки на файлы круглых заголовков, если у вас есть защита #ifndef. В этом-то и дело. Р>
Прямая ссылка используется, чтобы избежать использования заголовочных файлов #include (ing) для объектов, которые вы используете только по указателю или по ссылке. Однако в этом случае вы не решаете проблему циклических ссылок, вы просто практикуете хороший дизайн и отделяете файл .h от деталей, которые ему не нужны.