我已经定义了一个类myClass
,它的一个数据成员是
std::map<int,data*> dataMap
数据定义为
struct data
{
int d1;
int d2;
std::string d3;
}
向 dataMap 中插入数据的过程如下:dataMap[key] = new data;
以下赋值会导致问题:
myClass a1,a2;
//init a1;
a2 = a1;
我想对数据使用 auto_ptr 而不是 data*。我该怎么做? - 因为在 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 的正确方法