vector容器元素是指针的销毁问题?
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);}
http://www.cnblogs.com/BlueTzar/articles/1223313.html
[解决办法]
我以前也遇过这种问题!!!
#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();//没有出错!}