在我的代码中的某处,我调用:A* p = new A;
并将指针p放在向量中。
现在我想删除指针和指针指向的类。 像这样:
A* p = getpointerfromvector(index); // gets the correct pointer
从向量中删除指针:
vector.erase(vector.begin()+index)
现在我想删除指针所指向的类并将其删除。
delete p; // (doest work: memorydump)
或p->~A
与~A
类A的析构函数,正文为delete this;
。 (每当我调用该函数时,我的程序都会退出。)
答案 0 :(得分:2)
这对我有用。不能将它与您的代码进行比较,因为它不在您的帖子中。
#include <stdio.h>
#include <vector>
using std::vector;
class A
{
public:
A() {mNum=0; printf("A::A()\n");}
A(int num) {mNum = num; printf("A::A()\n");}
~A() {printf("A::~A() - mNum = %d\n", mNum);}
private:
int mNum;
};
int main ()
{
A *p;
vector <A*> aVec;
int i, n=10;
for (i=0; i<n; i++)
{
p = new A(i);
aVec.push_back(p);
}
int index = 4;
p = aVec[index];
aVec.erase(aVec.begin()+index);
delete(p);
}
<强>输出:强>
A::A()
A::A()
A::A()
A::A()
A::A()
A::A()
A::A()
A::A()
A::A()
A::A()
A::~A() - mNum = 4