Вам не нужно включать файл .cpp. Включение файла .h - это все, что нужно. .h означает заголовок, т. е. все, что он должен иметь - это определения функций / объектов Реальные реализации находятся в файле .cpp с тем же именем. Линкер позаботится о том, чтобы исправить это за вас.
Заголовочный файл содержит объявлений (также известный как прототип). Включение заголовка позволяет программе знать: «Я объявляю что-то похожее на существующее».
Пользователь заголовков избавляет нас от необходимости объявлять методы повсюду в наших файлах кода - мы просто делаем это один раз, затем импортируем файл.
Файл .c / .cpp / .cc содержит определение - которое сообщает программе, что делает функция.
Вам не нужно «включать» файлы .c, потому что это то, что делает компилятор - он компилирует все ваши файлы .c в машинный код.