Merkwürdiges Problem mit Liste
-
Moin,
habe in meiner Klasse eine Membervariable
std::vector<MyClass*> myVector;diese Befülle ich in einer Methode folgendermaßen
myVector.push_back(new MyClass());soweit so gut.
versuche ich jedoch später darauf zuzugreifen ist der Vektor leer.
Das Füllen geschieht auf jedenfall vor dem auslesen und es greifen keine anderen Methoden auf den Vector zu.
-
Hallo,
die Frage gehört eigentlich ins C++-Forum.
Wie greifst Du auf die vector-Elemente zu (was heißt "der Vector ist leer"?) und was sagt size() nach dem Befüllen?
-
Zugreifen tue ich mittels [ ].
Nach dem Befüllen ist size = 1;
in der Methode in der ich zugreifen will stürzt er allerdings schon bei dem versuch size aufzurufen ab

-
Dann zeig doch bitte mal etwas mehr Code: wo wird der std::vector erstellt und befüllt und wo wird darauf zugegriffen.
-
h - Datei
class MyDlg : public CDialog { ..... ..... private: std::vector<MyClass*> myVector; ..... ..... public: void fuellen(); void lesen(); }Cpp Datei
void MyDlg::fuellen() { myVector.push_back(new MyClass()); } void MyDgl::lesen() { int size = myVector.size(); //Knallt schon :) //Hier der Zugriff mittels [] }mehr ist es eigentlich nicht.
lesen und fuellen sind events eines Sockets
-
Wenn ich das richtig verstanden habe
in der H-Datei
std::vector<MyClass> myVector;*in der CPP-Datei
Funktion1
myVector.push_back(new MyClass());
ab hier hat myVector InhaltFunktion2 (nach Funktion1 aufgerufen)
myVector.size();
hier ist myVector leer?
-
HelferleinKLeim schrieb:
Wenn ich das richtig verstanden habe
in der H-Datei
std::vector<MyClass> myVector;*in der CPP-Datei
Funktion1
myVector.push_back(new MyClass());
ab hier hat myVector InhaltFunktion2 (nach Funktion1 aufgerufen)
myVector.size();
hier ist myVector leer?völlig richtig. Alledings kann ich auf size schon nicht mehr zugreifen

-
Bist Du mit dem Debugger mal durchgegangen?
Ist der vector nach Aufruf der Methode fuellen() noch i.O.? Wird das MyDlg-Objekt vielleicht irgendwo wieder zerstört, bevor du lesen() aufrufst?
-
Problem hat sich gelöst. Hatte weniger mit der Liste als viel mehr mit den Sockets zu tuen.