Hola,
La solución que te planteo a acontinuación es MUY parecida a la de CHUIDIANG salvo en algunas cosillas que considero importantes:
UClaseA.h
class B;
class A
{
private: //tambien puede ser public
B *ObjetoB;
};
UClaseA.cpp
#include <UClaseB.h>
/*esto permite crear objetos de la clase B ya que a partir de aca se encuentra definida dicha clase*/
UClaseB.h
class A;
class B
{
private: //tambien puede ser public
A *ObjetoA;
};
UClaseB.cpp
#include <UClaseA.h>
/*esto permite crear objetos de la clase A ya que a partir de aca se encuentra definida dicha clase*/
¿Y cuales son las diferencias? Pues que ninguna de las cabeceras (los archivos .h) poseen inclusiones de ningun tipo, esto hace mucho mas "compilable e independiente" tu código. En realidad, la teoría nos dice que así debería de hacerse el código anterior puesto que ni la clase A tiene un objeto B y tampoco la clase B tiene un objeto A, lo que en realidad tienen son referencias a objetos de ese tipo.
Saludos,
Bufalito