Один из способов избежать проблем с включением / зависимостью - попытаться минимально объявить определения классов / структур, где это возможно (однако, только указатели / ссылки, спасибо Aldo за указание на это). Скажем, у вас есть этот класс:
class foo
{
bar* barObject;
};
Очевидно, что бар должен быть определен в какой-то момент ранее. Вместо того, чтобы включать заголовочный файл bar, мы можем просто добавить следующую строку прямо перед определением foo.
class bar;
Это не позволяет компилятору жаловаться на то, что bar не определена, но также не требует включения всего заголовка. (известный как предварительная декларация)
Я обнаружил, что это минимизирует много досадных включений, которые могут возникнуть, когда есть циклические зависимости и еще много чего.
Это может или не может помочь в вашем случае, так как очень трудно диагностировать вашу конкретную проблему с помощью предоставленной вами информации, но это может послужить отправной точкой.
Больше чтения:
http://www -subatech.in2p3.fr / ~ фотонов / subatech / мягкий / Карнак / CPP-INC-1.shtml