首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

auto_ptr 中reset函数的有关问题

2012-02-12 
auto_ptr 中reset函数的问题在vs2003中使用auto_ptr中reset函数没有问题将代码转换到vc6下后:classCDimSty

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很可能导致这个指针被删除两次!

热点排行