我正在實現智能指針並嘗試使用它的指針矢量,以便在指針超出範圍時不必刪除指針。下面是我編寫的程序,但它正在崩潰。有人可以幫助我嗎?在C++中使用帶有矢量的智能指針時崩潰
#include<iostream>
#include<vector>
using namespace std;
template<class T>
class smrtP
{
T *p;
public:
smrtP(T* pp = NULL):p(pp) {}
~smrtP() { delete p;}
T& operator*() {return *p;}
T* operator->() {return p;}
};
class B
{
public:
virtual void draw() = 0;
virtual ~B() { cout<<"~B"<<endl; }
};
class D:public B
{
public:
D() { cout<<"D"<<endl;}
virtual void draw()
{
cout<<"Draw D"<<endl;
}
virtual ~D() { cout<<"~D"<<endl; }
};
int main()
{
typedef smrtP<B> sp;
vector<sp> v;
sp ptr(new D());
v.push_back(ptr);
}
您沒有實現複製構造函數或賦值運算符。 –