Probleme mit Pointern
-
danke, aber ich wollte eigentlich eher wissen, wo bei mir der fehler liegt.
eine fertige klasse hätte ich auch so zur verfügung.
-
warum dereferenzierst du bei next das node?
-
maddinac schrieb:
...
... Node getNext(){ return *next; } }Hier gibst Du eine KOPIE des Node-Objekts zurück !
Das dürfte etwas Anderes sein, als Du willst.Gruß,
Simon2.
-
@Simon2: Siehe meinen Post (der letzte vor deinem
) hab mich nur vertan ... die Funktion heißt bei ihm getNext und nicht wie in der Umänderung von mir next ...
-
Ja das dachte ich auch schon und hatte es auch mal geändet.
Aber wenn ich dann den Code entspr. anpasse, zB. beivoid insert(T v){ if (length>0){ last->insert(v); [i]last = &(last->getNext());[/i] [b]--> last = last->getNext();[/b] }else{ first = new Node<T>(v); last = first; } length++; }bekomme ich an der geänderten Stelle eine Fehlermeldung, weil Node* nicht in Node konv. werden könne.
-
Node* getNext(){ return next; }
-
(D)Evil schrieb:
@Simon2: Siehe meinen Post (der letzte vor deinem
) hab mich nur vertan ... die Funktion heißt bei ihm getNext und nicht wie in der Umänderung von mir next ...Deinen Hinweis hatte ich nicht in dieser Richtung verstanden (weil ich das Problem nicht in der Dereferenzierung, sondern in der Übergabe via Kopie einsortiert habe) ... und da ich nicht sicher bin, ob das dem OP nicht ebenso geht, ist mein Post vielleicht nicht komplett überflüssig.

(Sein letztes Posting bestärkt mich in dieser Annahme)Gruß,
Simon2.
-
Wunderbar, danke!
das war der Fehler.Sage ich jetzt dadurch, dass ich einen Pointer zurückgebe? weil ich ja die adresse returne.
-
maddinac schrieb:
Wunderbar, danke!
das war der Fehler.Sage ich jetzt dadurch, dass ich einen Pointer zurückgebe? weil ich ja die adresse returne.
Genau !
Node f( // gibt ein Objekt des Typs Node zurück Node* f( // gibt einen Pointer auf ein Objekt des Typs Node zurück... wie bei allen Anderen Typangaben auch.

Gruß,
Simon2.
-
Keine Ursache:)
hä? nochmal klar in deutsch:)
Edit: OK:)