In C.cpp, a meno che in C.h si usi una funzione inline che ha bisogno di un oggetto A fatto e finito.
Se invece in C.h hai bisogno di dichiarare solo un puntatore ad A basta una forward declaration.