class A; class B; class A { public: B *b; ~A() { delete b; } }; class B { public: A *a; ~B() { delete a; } };