class A
{
   bool reset;
   void delegate dtor();
   ~this()
   {
      if (!reset)
         dtor();
   }
}

class B
{
   A a;
   bool run;
   ~this() { if (!run) a.reset = true; run = true; }
}

A a = new A;
B b = new B;
b.a = a;
b.a.dtor = & b.__dtor;

relying on to "bool reset" it's no good idea.

In this case a manual memory management - good choice.

Reply via email to