我有一個稱爲形從中既Circle和Rectangle派生的抽象基類,但是當我執行在VS 2005下面的代碼我得到的錯誤調試斷言失敗。同時,我還沒有重載==操作符在任何類矢量迭代器不dereferencable
表達:矢量迭代器不dereferencable,究竟是什麼原因。
vector<Shape*> s1;
s1.push_back(new Circle(point(1,2),3));
s1.push_back(new Circle(point(4,3),5));
s1.push_back(new Rectangle(point(1,1),4,5));
vector<Shape*> s2(s1);
reverse(s1.begin(),s1.end());
(*find(s1.begin(),s1.end(),new Circle(point(1,2),3)))->move(point(10,20));
並且比較形狀對象而不是形狀指針使用boost :: ptr_vector。這使您可以更自然地使用常規算法。 – 2008-11-19 20:00:11