Когда я могу использовать предварительную декларацию? - PullRequest
568 голосов
/ 16 февраля 2009

Я ищу определение, когда мне разрешено делать предварительное объявление класса в заголовочном файле другого класса:

Могу ли я сделать это для базового класса, для класса, хранящегося в качестве члена, для класса, переданного функции-члену по ссылке и т. Д.?

Ответы [ 12 ]

0 голосов
/ 16 февраля 2009

Предположим, что предварительное объявление получит ваш код для компиляции (объект obj создан). Однако связывание (создание exe) не будет успешным, пока не найдены определения.

0 голосов
/ 16 февраля 2009

Обычно вы хотите использовать предварительное объявление в заголовочном файле классов, когда вы хотите использовать другой тип (класс) в качестве члена класса. Вы не можете использовать заранее объявленные классы методы в заголовочном файле, потому что C ++ пока не знает определения этого класса. Это логика, которую вы должны переместить в .cpp-файлы, но если вы используете функции-шаблоны, вы должны уменьшить их до той части, которая использует шаблон, и переместить эту функцию в заголовок.

...