Ладно, разобрался я. Делать это в общем случае надо так: перед инклудом писать объявления всех классов, которые инклудим и на которые хотим иметь ссылки ниже. Не писать инклуд в некоторых файлах для используемого класса, а заменять его пустышкой как у ubuntar - плохой тон, да и в большой системе просто запутаться. Если писать после инклуда - то gcc ругается, и вообще-то он прав, см. описание include. А про проектирование - это не ошибка, а способ решать многие проблемы обратной связи. Древовидная структура наследования и включения - это не труЪ в высшей инстанции)) Ссылки - великая вещь.