А вот что предпочитает уважаемый All:
или
в больших проектах с кучей хедеров? Против первого вопроса вроде-бы говорит путаница и рекурсивный инклюд, против второго - возложение миссии подтирать за программистом целиком на линкер и пляски с анрезолвед екстерналс. По-мне, так лучше первый подход, ибо парсеры в некоторых IDE (не будем показывать пальцем) включают автокомплит только тогда, когда в области видимости есть декларация класса. Дискач.