Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

drakon

Supermoderator

  • »drakon« ist der Autor dieses Themas

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

11

29.04.2007, 19:52

aha..meinst du, dass es eigentlich richtig mit em einlesen funktioniert, aber da die liste ja noch leer ist, kann er die daten nirgends reinschreiben?
nun..die liste wird eigenlitch bei jedem start wieder mit 5 "default personen" gefüllt. Darum sollte es ja nicht an dem liegen, oder?

also ich benutze sizeof nicht auf einen zeiger.. CMember ist eine klasse...
also sollte die grösse (bis auf den string ) ja sitmmen. Ich habe es soweit ich mich erinner kann auch mal mit einem char- array versucht und nicht direkt mit dem zeiger, damit der compiler weiss, wie gross der string sein kann.. aber dann hat er mir wieder einen fehler ausgegeben...

das mit dem iterator habe ich schon gedacht, dass es irgendwie falsch ist, aber

C-/C++-Quelltext

1
&(*it)
hat auch nicht funktioniert...


inwiefern hat dann die serialisierung damit zu tun?

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

12

29.04.2007, 19:57

Zitat von »"drakon"«

das mit dem iterator habe ich schon gedacht, dass es irgendwie falsch ist, aber

C-/C++-Quelltext

1
&(*it)
hat auch nicht funktioniert...


C-/C++-Quelltext

1
it._Myptr


müsste besser gehen

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

13

29.04.2007, 19:58

Zitat von »"drakon"«

aha..meinst du, dass es eigentlich richtig mit em einlesen funktioniert, aber da die liste ja noch leer ist, kann er die daten nirgends reinschreiben?
nun..die liste wird eigenlitch bei jedem start wieder mit 5 "default personen" gefüllt. Darum sollte es ja nicht an dem liegen, oder?


Nein, deine Vorgehensweise ist nicht korrekt. Besser wäre folgendes (Pseudocode):

C-/C++-Quelltext

1
2
3
4
5
6
while ( !stream.eof() )
{
  CMember* curr = new CMember;
  read( stream, curr );
  list->push_back( curr );
}


Zitat von »"drakon"«


also ich benutze sizeof nicht auf einen zeiger.. CMember ist eine klasse...
also sollte die grösse (bis auf den string ) ja sitmmen. Ich habe es soweit ich mich erinner kann auch mal mit einem char- array versucht und nicht direkt mit dem zeiger, damit der compiler weiss, wie gross der string sein kann.. aber dann hat er mir wieder einen fehler ausgegeben...


Du verwendest sizeof nicht auf einen Zeiger, aber in CMember sind evtl Zeiger. Drum wird die Größe von deinem Objekt zwar korrekt angezeigt, aber das ist nicht der Wert den du benötigt um dein Objekt zu speichern, denn du willst ja den vollständigen String mit speichern.

Und sizeof gibt keinen Fehler raus wenn es auf einen Zeiger angewendet wird!

Zitat von »"drakon"«


das mit dem iterator habe ich schon gedacht, dass es irgendwie falsch ist, aber

C-/C++-Quelltext

1
&(*it)
hat auch nicht funktioniert...


Klar geht das nicht, der Rest ist ja auch noch falsch!

Zitat von »"drakon"«


inwiefern hat dann die serialisierung damit zu tun?


Das hat insofern was damit zu tun als das du versuchst dein Objekt in eine Datei zu speichern und wieder auszulesen.
@D13_Dreinig

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

14

29.04.2007, 20:01

David_pb ich glaube kaum, dass er eine Liste mit Pointern auf CMember hat... von daher ist das mit den Defaultmembern die überschrieben werden schon ein möglicher Ansatz...

// Bleibt trotzdem der String...

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

15

29.04.2007, 20:03

Das war ja nur ein Beispiel. Und klar ist das ein Ansatz, aber kein guter! Erstmal kann man sich nicht zwangsläufig darauf verlassen das die Einträge wirklich vorhanden sind und zweitens könnten in der Datei zu wenig Daten sein.
@D13_Dreinig

drakon

Supermoderator

  • »drakon« ist der Autor dieses Themas

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

16

29.04.2007, 20:16

Zitat von »"grek40"«

Zitat von »"drakon"«

das mit dem iterator habe ich schon gedacht, dass es irgendwie falsch ist, aber

C-/C++-Quelltext

1
&(*it)
hat auch nicht funktioniert...


C-/C++-Quelltext

1
it._Myptr


müsste besser gehen


zu was für einem thema gehört denn das? also it._Myptr? respektive wo kann ich mehr darüber lernen? (irgendein guten buchvorschlag?)

das mit dem new und dann in die liste einfügen könnte ich mal ausprobieren... (aber was hat es mit dem .eof auf sich)?

aber theoretisch ist &(*it) gar nicht so abwegig, oder?


wie dem auch sei...ich danke euch mal für die guten antworten, aber im moment habe ich keine zeit das alles nochmal genau durchzugehen.. ich werde mich aber mal nochmal dahinterhocken und das anschauen...

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

17

29.04.2007, 20:31

Du bekommst durch it._Myptr den Zeiger zurück der auf das aktuelle Objekt der Liste zeigt. Es wäre äquivalent zu &( *it ) was natürlich auch nicht abwegig ist.
@D13_Dreinig

Werbeanzeige