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();//没有出错!}