bigredeyes Geschrieben 3. Februar 2004 Geschrieben 3. Februar 2004 hallo liebe gemeinde! ich hab eine kleine clist-verwirrung am start: ich speichere objekte in einer CList. die hab ich per typedef definiert. eine andere klasse bekommt einen pointer von so einer liste und legt selbst noch eine objekt einer solchen liste an. das objekt wird zur erstellungszeit mit kopien gefüttert. jetzt folgendes problem: wenn ich mir die beiden startadressen ausgeben lasse: pointer: 12fe94 objekt: 12fe78 wenn ich mir aber jeweils die GetHeadPosition ausgeben lasse: pointer: 32571c objekt: 32571c => beide listen haben dieselben objekte inne. warum verhält sich das so? ist mir unverständlich! hab schon 1000 mal den code angeschaut. ich verbandel die eigentlich nirgends! Zitieren
Klotzkopp Geschrieben 3. Februar 2004 Geschrieben 3. Februar 2004 Was speicherst du denn in der Liste, sprich: wie sieht der typedef aus? Kannst du ein Minimalbeispiel zeigen, das den Fehler reproduziert? Zitieren
bigredeyes Geschrieben 3. Februar 2004 Autor Geschrieben 3. Februar 2004 aaalso, dann schmeiß ich mal mit bissl code rum: das ganze soll ein rekursiver pfadfinder sein. durch linksklick erzeuge ich eine "stadt" vom typ MyCity, wenn ich zwei städte hintereinender markiere, erzeuge ich eine MyRoad, die 2 citys verbindet. MyCity hat als member CPoint location inr nr //städte haben keine namen, nur nummern! MyRoad hat als member MyCity* start MyCity* ende int nr //bei mir gibts auch keine straßennamen, nur nummern! die klasse mit den listen heißt Search typedef CList <MyRoad, MyRoad> RoadList; vor der rekursion muß noch vorarbeit geleistet werden. funktion heißt: void PrepareWork(Search::RoadList* _allRoads, Search::RoadList *_walkedWays, int _startcity, int _endcity); _allRoads sind ALLE straßen auf meiner karte. _walkesWays sind die abgelaufenen straßen, die ich nicht mehr benützen darf. rückwärtslaufen ist schwachsinn. in die prepare-funktion kommt als 2. argument eine neu erstellte liste von RoadList. wenn ich mir in der prepare-func die HeadPositionAdressen ausgeben lasse, sind beide gleich. lasse ich mir vor dem Prepare-aufruf nocheinmal die anzahl der obj. und HeadPosAdressen ausgeben sind sie unterschiedlich?!?! falls du mehr input brauchst, sag nur! Zitieren
bigredeyes Geschrieben 3. Februar 2004 Autor Geschrieben 3. Februar 2004 eieieieieiei ne, ich bin doch schuld, nicht c++. bin mit meinen eigenen namen durcheinendergekommen und hab die ganz komisch in inline-funktionen rumgeschoben. ergebnis war, das die listen dann echt gleich waren! mein fehler! bigredeyes Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.