Il distruttore dev'essere virtual altrimenti accade quello che hai descritto.