Если определение базового класса по какой-либо причине не содержит какой-либо информации о производных классах, файл заголовка базового класса не должен включать в себя файлы заголовков производных классов.Таким образом, в действительности нет такой проблемы круговой зависимости, как вы описали.Если определение базового класса содержит некоторую информацию из производных классов, то я предполагаю, что ваш макет иерархии классов действительно неверно спроектирован.
Но я действительно считаю, что вы сформулировали проблему, ичто вы действительно хотите сделать, это другая вещь : создать заголовочный файл, который содержит все интересные (производные) классы, чтобы приложение могло удобно включать только этот единственный заголовочный файл и иметь каждый производный класс 'объявление доступно.То есть какой-то заголовочный файл summary .
И это как раз и есть рекомендуемое решение вашей проблемы.Избегайте путаницы с заголовочным файлом базового класса: просто создайте отдельный файл, включающий заголовочный файл каждого другого производного класса.Таким образом, вы оставляете файлы, относящиеся к иерархии классов, нетронутыми, а также разрешаете, чтобы приложение выборочно включало те или иные объявления классов, не включая все из них.Некоторые хорошо известные библиотеки, такие как Qt, используют этот подход.