Соглашение заголовочного файла C ++ - PullRequest
2 голосов
/ 29 ноября 2009

Я работаю над небольшой игрой на C ++ и использую генератор классов Eclipse CDT. Он создал файл .h с определениями классов и файл .cpp, который содержал методы без тела для указанного класса.

Так что, если бы я следовал шаблону, у меня был бы файл .cpp, заполненный объявлениями методов, и файл .cpp с телами методов. Однако я не могу включить файл .cpp в другой.

Так что же такое соглашение в C ++ с классами и включаемыми файлами? Я заполнил тела метода прямо под объявлением класса в файле .h и удалил файл .cpp.

Ответы [ 3 ]

5 голосов
/ 29 ноября 2009

Вам не нужно включать файл .cpp. Включение файла .h - это все, что нужно. .h означает заголовок, т. е. все, что он должен иметь - это определения функций / объектов Реальные реализации находятся в файле .cpp с тем же именем. Линкер позаботится о том, чтобы исправить это за вас.

Заголовочный файл содержит объявлений (также известный как прототип). Включение заголовка позволяет программе знать: «Я объявляю что-то похожее на существующее».

Пользователь заголовков избавляет нас от необходимости объявлять методы повсюду в наших файлах кода - мы просто делаем это один раз, затем импортируем файл.

Файл .c / .cpp / .cc содержит определение - которое сообщает программе, что делает функция.

Вам не нужно «включать» файлы .c, потому что это то, что делает компилятор - он компилирует все ваши файлы .c в машинный код.

2 голосов
/ 29 ноября 2009

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

0 голосов
/ 29 ноября 2009

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

Исходный файл реализует, как класс выполняет свои действия.

Тем не менее, вы можете включить .cpp в другое (вы можете включить все что угодно), но вам не нужно.

...