n´inclue pas des . cpp mais des . h, qui ne doivent contenir que les proto des fonctions/classes/methodes que tu définis ( sauf exception faite du code inline et des templates, dont le compilo a besoin pour chaque fichier les utilisant).
donc commence par séparer ton code en . h ( les proto) et en . cpp ( le code correspondant), ça devrait aider ( sinon tu dois surement te retrouver avec redefinition, au niveau du linker).
Au passage, pense à eviter l´inclusion circulaire dans tes . h, à grand coup de #ifndef / #define ou assimilé ( ou alors des macro spécifique au compilo, comme du #pragma et du include once sous VC++)