struct A; struct B { A* a; B(A*); // TBD 1 ~B(); // TBD 2 } struct A { B* b; A(): b(new B) {} ~A() {delete b;} };