Ich habe eine abstrakte Basisklasse namens Shape, aus der beide Kreis und Rechteck abgeleitet sind, aber wenn ich den folgenden Code in VS 2005 ausführen, bekomme ich den Fehler Debug Assertion fehlgeschlagen. Zur gleichen Zeit habe ich nicht == Operator in irgendeiner KlasseVektor Iterator nicht dereferencable
Ausdruck: Vector Iterator nicht dereferencable, was ist der Grund dafür.
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));
Und um Shape-Objekte anstelle von Shape Pointer zu vergleichen, verwenden Sie boost :: ptr_vector. Dies ermöglicht Ihnen, die normalen Algorithmen viel natürlicher zu verwenden. –