hacker
Goto Top

Dereferenzierungsoperator überladen

-> Operator überladen

Hallo,

Ich habe eine Iteratorklasse geschrieben, und möchte jetzt den -> Operator überladen, um das ganze etwas freundlicher zu gestalten.
Aber ich weis leider nicht, welchen Rückgabetyp ich wählen muss. Ich hab zwar in der list - Headerdatei der STL nachgesehen, aber da verwenden sie nur irgendwelche mit typedef erstellten Datentypen bei denen ich beim Rückverfolgen immer bei void rauskomme. void* hab ich schon versucht, ist auf jeden Fall nicht die Lösung.
Ich hab zwar schon den * Dereferenzierungsoperator überladen, aber ohne -> ist es einfach nicht das selbe ;(.

Schon mal Danke für eure Antworten!!!

Content-Key: 136872

Url: https://administrator.de/contentid/136872

Printed on: April 24, 2024 at 21:04 o'clock

Member: Guenni
Guenni Feb 26, 2010 at 14:58:30 (UTC)
Goto Top
Hi Hacker,

. . . Aber ich weis leider nicht, welchen Rückgabetyp ich wählen muss. . . .

Der Rückgabetyp vom Operator -> muß ein Zeiger auf ein Element einer Klasse sein,

allerdings auf ein Element einer anderen Klasse, sollte er überladen sein.

Siehe => http://www.math.uni-wuppertal.de/~axel/skripte/oop/oop13_6.html

Was bedeutet . . . aber ohne -> ist es einfach nicht das selbe . . . ?

Wenn du den Operator -> auf deine Klasse anwenden willst, so muß

eine Variable dieser Klasse als Zeiger deklariert werden, z.B.:

Klasse* variable=new Klasse;

variable->print() z.B. ruft dann eine Elementfunktion deiner Klasse auf.

Gruß
Günni
Member: Hacker
Hacker Feb 26, 2010 at 19:49:17 (UTC)
Goto Top
Danke, Günni!!

Mir erschließt sich zwar nicht, warum der Zurückgelieferte Zeiger nicht dereferenziert werden muss, aber ich denke, das wird der Compiler wahrscheinlich selbst machen.

Na ja, jedenfalls ist meine Klasse jetzt gerettet!!!