gli attibuti non esistono nelle classe c++, si chiamano membri.

Comunque non puoi farlo perchè il compilatore non sa quanta memoria allocare per il membro x della classe A. Se vuoi tenere tutto nello stesso file, come hai scritto, allora devi usare un riferimento alla classe B come di seguito
codice:
class A {
	class B *x; //qui mi da errore di tipo non definito
public:
	A() {
}
	~A(){
	}
};

class B {
	A y; //qui da errore se dichiaro prima B di A e ovviamente in questo caso non lo da sopra
public:
	B() {
	}
	~B(){
	}
};

int main ()
{
	return (0);
}
Scrivi però prima del membro x class B *
Se vuoi utilizzare un oggetto della classe B anzichè un riferimento devi usare più file headers, in uno definisci la classe A e nell'altro la classe B
ciao
sergio