Вы можете использовать так называемое «предварительное объявление».
Для функции это будет что-то вроде void myFunction(int);
.Для переменной это может выглядеть как extern int myVariable;
.Для класса class MyClass;
.Эти бестелесные операторы могут быть включены перед фактическими объявлениями, несущими код, и предоставляют компилятору достаточно информации для создания кода, использующего объявленные типы.
Чтобы избежать проблем с циклическими включениями, используйте «include guard»- #ifdef
вверху каждого заголовочного файла, что предотвращает его включение дважды.