STL vector: Kind abstrakter Klasse einfügen

  • 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:

    Code
    class FractalAlgorithm {
    public:
    	virtual vector<FractalPosition>* generatePositions() = 0;
    };

    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:

    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?

  • Zitat von Swoncen

    Was für ein Fehler ist es denn?

    wir arbeiten in XCode und es sagt nicht wirklich was sondern startet den debugger (GDB) und hupft auf oben genannte zeile in stl_vector.h

  • Zitat von morgan

    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:

    virtual vector<FractalPosition>* generatePositions() = 0;

    Wieso ist fractals auch ein Pointer (auf einen Vektor)? Hast Du das Objekt schon mit new angelegt? Ein Vektor sollte reichen.

  • Zitat von kubuntu

    hmmm wenn in der Zeile wo du sagst der Fehler auftritt dann kann das ja eigentlich nur ein nicht initialisierter pointer sein (der vector ptr).


    und

    Zitat von Spockman

    Hast Du das Objekt schon mit new angelegt?

    ja richtig, das war der dumme fehler. danke für den tip!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!