Nei vari file.cc devi comunque includere i vari file.hh necessari. La forward declaration ha effetto solo su questi ultimi e si basa sul fatto che il compilatore può definire un puntatore a una classe anche senza sapere com'è fatta. Almeno finché nell'header file non intendi usare quel puntatore, ma non mi pare sia questo il caso.