Veröffentlicht 19. März 200223 j Ich habe die Klasseclass Test { public: Test *b; int a; };[/PHP]und meine Funktion[PHP]void main() { Test wurzel; int i=0; while(i<10) { ???? } }Was muss ich nun in die while Schleife schreiben wenn ich möchte, das er mir insgesamt 10 Objekte vom Typ Test erstellt, und wobei b immer die Adresse des folgenden Objektes bekommt. Ich weiß ich kann mit wurzel.b = new Test; ein neues Test objekt dynamisch erstellen. Aber wie muss ich da weiter vorgehen? Bine
19. März 200223 j void main() { Test wurzel; int i=0; Test* pTemp = &wurzel; while(i<10) { pTemp->b = new Test; pTemp = pTemp->b; } }[/PHP]
19. März 200223 j Und kannst DU mir auch erklären was da jetzt was tut? Ist alles noch etwas neu für mich. Bine
19. März 200223 j Ich erzeuge einen Zeiger auf Test names pTemp. Diesem weise ich auch gleich einen Wert zu, und zwar die Adresse von wurzel. Beim ersten Schleifendurchlauf passiert folgendes: Da pTemp auf wurzel zeigt, ist pTemp->b gleichbedeutend mit wurzel.b. In jedem Fall wird ein neues Test erzeugt, und dessen Adresse in wurzel.b gespeichert. Danach setzt ich pTemp auf einen neuen Wert, nämlich die Adresse des gerade neu erzeugten Objekts. Dadurch wird beim nächsten Schleifendurchlauf die Adresse des neuen Tests nicht in wurzel.b, sondern im zuletzt erzeugten Test gespeichert.
19. März 200223 j Wenn ich in der Schleife jetzt jeweils dem zu b gehörigen a den Wert von i zuweisen möchte, mache ich das dann sowurzel.a = i;Und wenn ich jetzt im Nachhinhein dann auf sagen wir mal das fünfte erzeuge Objekt zugreifen will, wie mache ich das dann? Und wie könnte ich mir z.B. die kompletten a's ausgeben lassen? Fragen über Fragen und keine Antworten!?!? Bine
19. März 200223 j Direkt auf das fünfte a kannst du in der Liste nicht zugreifen, denn jedes Element kennt ja nur seinen Nachfolger... bzw. dessen Adresse... Da musst du wieder mit ner Schleife ran...
19. März 200223 j Ich hätte da auch eine kleine Frage am Rande: Warum beutzt Du nicht die STL? Wenn ich es richtig verstehe, dann soll es eine Verkette Liste werden. Die STL bietet eine Verkette Liste schon an, so daß man das Rad nicht neu erfinden muß. Der Container findet sich im <list> header. HTH Jan
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.