Вы можете объявить классы не заголовочные файлы.
Проблема с циклическими зависимостями обычно является признаком плохого дизайна. Вы хотите, чтобы TaskModel.h включал Form1.h? Это почему? Можно ли этого избежать? Не могли бы вы просто включить Form1.h в TaskModel.cpp?
Для предварительной декларации выполните:
// in TaskModel.h
class Form1; // or other classes that are using in TaskModel.h
//... task model code
// in TaskModel.cpp
#include "Form1.h"
По сути, вы здесь заявляете, что такие классы существуют . Затем в файл cpp вы включаете их.
Имейте в виду, однако, что это имеет некоторые ограничения:
- Вы можете использовать только объявленные классы для простых задач
- вы не можете передавать их методам по значению, вы не можете сделать их членами классов
Как правило, , если размер перенаправленных классов необходим для компиляции данного фрагмента кода, вы не можете использовать форвард .