Ben ca depend pas mal de ou exactement tu as besoin de tout ca.
Deja c'est rare que l'on fasse des #include "machin.cpp", a part pour les classes templates.
Sinon, si les fichiers n'ont besoin de se connaitre que dans les .cpp et pas dans les headers, et ben tu fais les inclusions dans les .cpp et pas dans le header, et reciproquement.
Et pis ben si même avec ca, ca ne fonctionne pas, alors faut rassembler dans un même fichier.