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

vector容器元素是指针的销毁有关问题

2012-08-13 
vector容器元素是指针的销毁问题?C/C++ codeCData{~CData(){clear()}void clear(){for(vectorconst CRul

vector容器元素是指针的销毁问题?

C/C++ code
CData{    ~CData(){clear();}        void clear()    {        for(vector<const CRule*> itr = vRule.begin()......)        {            delete (*itr);        }    }private:        vector<const CRule*> m_vRule;}void func(){   CData cObj;   m_pXXX->insert(cObj);}


fun()调用结束后cObj析构被中断??请教大侠们这段代码有什么问题?

[解决办法]
有new才有delete
[解决办法]
对于vector来说,指针和一个整型值没有什么区别,区别就在于你怎么理解了
[解决办法]
去了解了解深拷贝

C/C++ code
http://www.cnblogs.com/BlueTzar/articles/1223313.html
[解决办法]
我以前也遇过这种问题!!!
C/C++ code
#include <iostream>#include <vector>using namespace std;class CRule{};class CData{public:    ~CData(){clear();}    void clear()    {        for(vector<const CRule*>::iterator itr = m_vRule.begin();itr!=m_vRule.end();++itr)        {            delete (*itr);//你把itr给删了,itr为空,若这时你 ++itr肯定会core        }    }    void add(const CRule* &pRule)    {        m_vRule.push_back(pRule);    }private:        vector<const CRule*> m_vRule;};void func(){    CData cObj;    const CRule* pRule = new CRule();    cObj.add(pRule);}void main(){        func();//没有出错!} 

热点排行