Тут надо решать другую проблему - как у тебя вообще получилось так, что деструктор вызывается дважды?
я нигде не писал, что деструктор у меня вызывается дважды
хинт: читать внимательно условие в 1ом посте, там все написано
Добавлено
дополню еще: у каждого экземпляра класса TVector для поля data выделяется свой участок динам.памяти, т е нет разделяемой памяти между данными векторов
не понимаю, по-моему 1ая версия деструктора вполне сойдет, там даже есть избыточность по обнулению, но это ладно...