Vector ungültig
-
Hallo!
Ich habe in meinem Programm im private-Abschnitt der Klasse einen Membervector
deklariert.std::vector<cEffect> m_EffectList;Dieser soll Objekte der Klasse cEffect speichern.
Doch ein push_back wird mit einem Segfault quittiert.
Zum Test hab ich den Vector mal auf int geändert, aber einm_EffectList.push_back(1);ergibt auch einen Segfault.
Dann hab ich mir mal m_EffectList.size() ausgeben lassen.
Obwohl der Vector noch leer ist, bekomme ich als Ausgabe 3435973838.
Es scheint, als ob der Vector ungültig ist, aber er wird auch sonst nirgends
im Programm manipuliert.
In einer anderen Klasse geh ich ganz genauso vor. Ich deklariere einen Vector
als Member, und die ganze Klasse kann darauf zugreifen. Nur in dieser Klasse
geht es nicht.
-
Hi,
Dein Fehler liegt woanders - zeig mal ein wenig "drumherum" (z.B. die Erzeugung Deiner "umrahmenden Klasse").
Gruß,
Simon2.
-
Du weißt aber, dass Du bei push_back nicht die Anzahl der einzufügenden Objekte, oder gar den Index, sondern das Objekt selbst einfügen musst, oder?! Hier wird also der Konstruktor der Klasse "cEffect" mit dem Wert 1 aufgerufen.
-
Er sagt doch, dass er testweise einen vector<int> statt vector<cEffect> eingebaut hat, dieser aber das selbe verhalten ziegt.
Bisher wurde nur die Definition von m_EffectList gezeigt. Diese sit nicht falsch. std::vector an sich ist wohl kaum kaputt. => Keiner wird dir helfen können, da keiner ausreichend Informationen hat.
-
Helium schrieb:
Er sagt doch, dass er testweise einen vector<int> statt vector<cEffect> eingebaut hat, dieser aber das selbe verhalten ziegt.
Upps, shit, joar glatt überlesen
.
-
Stimmt, der Fehler lag woanders.
Das Problem war, dass ich den Vector schon im Hauptprogramm anlege.
Dort wird er mit Werten gefüllt, die aus Dateien ausgelesen werden.
Da ich den Vector in anderen Klassen auch brauche, übergeb ich deren
Konstruktoren immer einen Zeiger auf die Klasse, die den Vector verwaltet.
Und da hab ich aus Versehen die gültige Klasse verdeckt.