Wir versuchen in einen Vektor die Implementierung einer abstrakten Klasse als Pointer einzufügen, der Debugger meldet bei push_back einen uns unerklärlichen Fehler. Hier die Klassen-Hierarchie:
abstrakte Basisklasse:
Implementierung in einer Subklasse:
Code
class LSystemAlgorithm : public FractalAlgorithm {
// definition der objektvariablen ..
public:
LSystemAlgorithm(..);
vector<FractalPosition>* generatePositions();
};
Und so wird der vector erstellt und befüllt:
Code
vector<FractalAlgorithm*> *fractals;
void init() {
map<string, string> productions;
// .. Initialisierungen
// hier taucht der Fehler auf - push_back kann nicht ausgeführt werden
fractals->push_back(new LSystemAlgorithm(new string("F--F--F"), &productions, 3, 2, 0, 60, 0));
// .. etc.
Alles anzeigen
Der Fehler wird im vector (stl_vector.h) an folgender Stelle gemeldet:
Code
void push_back(const value_type& __x) {
-> if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
// ...
Weiß jemand woran der Fehler liegt? Wie behebt man ihn?