Где-то в моем коде я вызываю: A* p = new A;
и помещаю указатель p в вектор.C++ как удалить класс с помощью указателя на класс
Теперь я хочу удалить указатель и класс, на который указывает указатель. так:
A* p = getpointerfromvector(index); // gets the correct pointer
Удалить указатель из вектора:
vector.erase(vector.begin()+index)
Теперь я хочу, чтобы удалить класс указатель, указывающий на и удалить его.
delete p; // (doest work: memorydump)
или p->~A
с ~A
деструктор класса А с телом: delete this;
. (моя программа закрывается всякий раз, когда я вызываю функцию.)
Небольшое уточнение по номенклатуре: В вашем случае 'A' это имя класса, в то время как' p' является указателем на объект. Когда вы делаете 'new A', вы создаете новый * объект *, а не новый * класс *. Важно оставить понятия класса и объекта отдельно :) –
Пожалуйста, покажите полный, компилируемый пример, демонстрирующий проблему. –
'delete p' верен. Если это не сработает, опубликуйте [sscce] (http://sscce.org/), демонстрируя проблему. – interjay