auto_ptr 中reset函数的问题
在vs2003中使用 auto_ptr 中reset函数 没有问题
将代码转换到vc6下后:
class CDimStyle //某类
auto_ptr <CDimStyle> DimStylePtr;
CDimStyle *pDimStyle=m_DimStylePList.Get(nID);
DimStylePtr.reset(pDimStyle);
编译提示错误:error C2039: 'reset ' : is not a member of 'auto_ptr <class CDimStyle> '
我查了下先前的资料说用: DimStylePtr.get()-> assign(pDimStyle);可以解决
但我改了后 通过get()返回CDimStyle 类型 但未找到assign方法
CDimStyle 继承于自己写的CObj类 CObj继承与CObject
希望前辈们帮下忙 万分谢谢 在线等
[解决办法]
是吗? 不能通过编译还是运行出错? 如果编译错的话,把错误信息贴出来看看.
如果是运行错的话,我觉得你在这儿就不应该使用auto_ptr.
在auto_ptr获得一个指针后,它就负责在最后调用此指针的析构函数.我不知道m_DimStylePList的类型是STL list还是你自己写的一个list类, 一般情况下list本身会负责释放所有成员. 因此你把其一个成员(m_DimStylePList.Get(nID))赋给auto_ptr很可能导致这个指针被删除两次!