P
NiBurhe schrieb:
Das mit dem Namespace std stammt so eins zu eins aus der Vorlesung
Dann hau deinen Prof
Das muss nicht schön sein, es muss erstmal nur funktionieren, dumme unbenotete Testate.
Das mag sein, trotzdem wirst du hier immer wieder
Schoenheitstipps bekommen, denn schoen bedeutet lesbar, leicht wartbar und vor allem schnell verstaendlich. Und wer gleich von Anfang an schoenen (= lesbaren, wartbaren,...) Stil praktiziert, quaelt spaeter sich (und uns) nicht mit grausamem hack&slay-Code
Das Speichern und auslesen an sich funktioniert, das Objekt sieht im Debugger richtig aus. Nur die Liste _studenten macht Probleme, sie scheint zwar im Debugger eine leere Liste zu sein, sobald man aber auf die Liste zugreifen will, schiesst er sich ab. Daher wollte ich die Liste _studenten, die mit ausgelesen wurde, mit einer neuen Liste überschreiben, da ich ja nur eine leere Liste brauche. Er scheint halt eine Speicheradresse für die Liste zu speichern, aber wenn es wieder ausliest ist diese Speicheradresse nicht mehr gültig, deswegen wollte ich ne neue Liste anlegen und die Liste _student dann auf die neue Liste verbiegen, ohne direkt mit einem Zeiger auf eine Liste zu arbeiten, da ich sonst wieder alle Methoden ändern muss, also ein Workarround, nicht schön, aber soll nur funktionieren.
Das Listenobjekt das du in deinem Kurs-Objekt hast, verwaltet intern seine Insassen mit Pointern. Die werden natuerlich ungueltig, sobald du das Objekt abspeicherst. Auch deshalb int das bitweise kopieren von Objekten aus dem Speicher in Dateien wirklich sehr, sehr, sehr, sehr unschoen. Mich wundert eh, dass das bisher bei dir funktioniert hat, schliesslich scheinen die Studenten-Objekte auch entweder const char* oder std::string-Member zu besitzen, die auch intern pointer besitzen, weshalb das bitweise Abspeichern und Auslesen in der Datei schiefegehn sollte (es sei denn du benutzt in student char-Arrays fester Laenge, was wiederum auch ein no-go in C++ ist).
Zeig uns doch mal den restlichen Code, also die Methoden von Kurs. Denn irgendwie scheinst du ja auf die Innereien von Kurs-Objekten Einfluss nehmen zu koennen.
Noch zwei Anmerkugnen:
Die Liste die du beim Auslesen der Datei benutzt und die Liste _studenten in deiner Kurs-Klasse haben verschiedenen Typ. Die eine speichert studenten, die andere pointer auf studenten!
vermeide fuehrende Unterstriche bei Variablennamen (z.B. _studenten, _Dozent etc.) einige Bezeichner mit fuehrenden Unterstrichen (und auch mit doppelten Untestrichen innerhalb des Namens) sind fuer die Compiler reserviert. Daher ist es besser, sich fuehrende Unterstriche von vornherein grundsaetzlich abzugewoehnen, bevor man irgendwann Stunden damit verbringt, einen subtilen Bug zu finden, der entstehen kann, wenn z.B. ein Compiler ein Makro definiert hat das man unbewusst benutzt hat.