quand tu inclus le a.cpp dans b.cpp, le preprocesseur recopie litteralement le code qu'il y a dans a.cpp au debut de b.cpp .
Du coup, les unresolved symbols disparaissent mais cette solution est "sale".
Si jamais, tu a besoin des memes fonctionalites dans un autre fichier, si tu reutilise un include .cpp, eh bien a la place des unresolved symbol tu va recuperer un already defined error. C'est pour ca qu'il faut mettre juste des definitons de fonctions dans les .h et pas du code.
Ton erreur doit venir du fait que le code dans le fichier .cpp qui te sert d'include n'est pas compile ou ne fait pas partie des dependances du linkeur. En gros, verifie bien que le .cpp en question se trouve dans le projet, dans les sources files.
La seule fois ou tu est oblige de mettre du code dans le .h, c'est dans le cas des templates. Si t'est dans ce cas, tu peux utiliser l'include .cpp sans bleme.