~Testclass(){delete name;}
Заглушит вашу утечку. C ++ не делает (и не должен) делать это за вас.
ETA: ildjarn правильно указывает, что у вас также должен быть конструктор копирования и оператор присваивания.
TestClass(const TestClass &cp): name(new QString(*(cp.name)) ) {}
const TestClass& operator=(const Testclass&rhs)
{
(*name)=(*hrs.name);
return *this;
}
В противном случае конструктор копирования по умолчанию или оператор присваивания будут дважды удалять одну и ту же память. Большинство классов, которым требуется деструктор, должны заменить или отключить конструктор копирования по умолчанию и оператор присваивания. Это называется «Правило трех».
Возможно, вы захотите просто хранить значение QString по значению, потому что он, скорее всего, сам по себе является контейнером облегченного класса, таким как std :: string или std :: vector. Но если вы новичок в C ++, то проделать это один раз - ценный урок.