Innanzitutto ti ringrazio della riposta tempestiva.

Ti riporto il caso che stavi dicendo tu con due header separati. Mi da ancora errore se non metto class prima del puntatore al membro x di tipo B. Perchè? E sopratutto con class davanti poi x lo considero cmq come un puntatore ad un oggetto B o no?
E poi perchè per esempio errore me lo da su A e non su B visto che sono fondamentalmente scritte uguali?

//File A.h

#include "B.h"

class A {
B *x; //cosi mi da errore, con class davanti no.
public:
A() {
}
~A(){
}
};

//File B.h

#include "A.h"

class B {
A* y;
public:
B() {
}
~B(){
}
};

Visto che ci siamo faccio un'altra domanda:
un puntatore si dichiara ad esempio cosi:
int *x; //puntatore ad un int

Questa dicitura è uguale ?
int* x;