c ++如何通过指向类的指针删除类

时间:2013-11-13 16:56:28

标签: c++ pointers

在我的代码中的某处,我调用: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;。 (每当我调用该函数时,我的程序都会退出。)

1 个答案:

答案 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