我已定義的類myClass
,其數據成員中的一個被智能指針::地圖
std::map<int,data*> dataMap
數據被定義爲
struct data
{
int d1;
int d2;
std::string d3;
}
插入數據到數據圖是做如下:dataMap[key] = new data;
以下分配會導致一個問題:
myClass a1,a2;
//init a1;
a2 = a1;
我想用auto_ptr代替數據* .how我怎麼做? - 因爲在a2被破壞後,破壞「a1數據的壞指針」有問題。 std::map<int,std::auto_ptr<data> >
是有問題的編譯
UPD正如你建議我使用std :: shared_ptr的,但它還是引起了問題: 在VS10
error C2440: 'delete' : cannot convert from 'std::tr1::shared_ptr<_Ty>' to 'void *'
1> with
1> [
1> _Ty=data
1> ]
你會寫指向使用的shared_ptr正確的方法示例代碼
您使用的是C++ 03還是C++ 11? – 2013-02-20 11:05:19
不要使用'auto_ptr',如果你有權訪問C++ 11,可以使用'std :: unique_ptr'或'std :: shared_ptr',否則回退到使用'boost :: shared_ptr'。 – Nim 2013-02-20 11:05:32