1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

STL vector: Kind abstrakter Klasse einfügen

  • morgan
  • 11. April 2006 um 15:38
  • Unerledigt
  • morgan
    4
    morgan
    Mitglied
    Punkte
    160
    Beiträge
    27
    • 11. April 2006 um 15:38
    • #1

    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:

    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?

  • Swoncen
    22
    Swoncen
    Mitglied
    Reaktionen
    1
    Punkte
    5.331
    Beiträge
    993
    • 11. April 2006 um 16:00
    • #2

    Was für ein Fehler ist es denn?

    640K ought to be enough for anybody. :eek2:

  • morgan
    4
    morgan
    Mitglied
    Punkte
    160
    Beiträge
    27
    • 11. April 2006 um 16:04
    • #3
    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

  • Spockman
    5
    Spockman
    Mitglied
    Punkte
    210
    Beiträge
    41
    • 11. April 2006 um 16:24
    • #4
    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.

  • kubuntu
    6
    kubuntu
    Mitglied
    Reaktionen
    2
    Punkte
    352
    Beiträge
    65
    • 11. April 2006 um 17:37
    • #5

    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).


  • morgan
    4
    morgan
    Mitglied
    Punkte
    160
    Beiträge
    27
    • 11. April 2006 um 19:04
    • #6
    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!

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung