Woodstock Geschrieben 19. März 2002 Teilen Geschrieben 19. März 2002 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 19. März 2002 Teilen Geschrieben 19. März 2002 void main() { Test wurzel; int i=0; Test* pTemp = &wurzel; while(i<10) { pTemp->b = new Test; pTemp = pTemp->b; } }[/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 19. März 2002 Autor Teilen Geschrieben 19. März 2002 Äh, in der while Schleife fehlt aber ganz sicher ein i++, oder? Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 19. März 2002 Teilen Geschrieben 19. März 2002 Jo, hast Recht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 19. März 2002 Autor Teilen Geschrieben 19. März 2002 Und kannst DU mir auch erklären was da jetzt was tut? Ist alles noch etwas neu für mich. Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 19. März 2002 Teilen Geschrieben 19. März 2002 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 19. März 2002 Autor Teilen Geschrieben 19. März 2002 Ok, danke! Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 19. März 2002 Autor Teilen Geschrieben 19. März 2002 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DonMaro Geschrieben 19. März 2002 Teilen Geschrieben 19. März 2002 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Orffi Geschrieben 19. März 2002 Teilen Geschrieben 19. März 2002 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 19. März 2002 Autor Teilen Geschrieben 19. März 2002 Und wie? Ist die Zuweisung von i an a denn so richtig? Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.