Linked List Bug

Hallo,

ich spiele grade ein bisschen mit C++ rum und versuche eine einfach verkettete Liste zu implementieren. Sollte eigentlich kein Problem sein, da ich das in Java schon mehrfach getan hab, aber in C++ will es nicht funzen :frowning: Folgenden Code habe ich:

include

class ListElement
{
private:
ListElement *next;
int data;

public:
ListElement(int d)
{
next = NULL; data = d;
};

int getData(){ return data;};
void setNext(ListElement el) {next = ⪙};
ListElement* getNext() {return next;};
};

void main()
{
ListElement a(1);
ListElement b(42);
a.setNext(b);
ListElement *tmp = a.getNext();
coutgetData()[42] und die Ausgabe müsste 42 sein. Statt dessen bekomme ich 4198415 !??!
Denke, mein Fehler liegt irgendwo bei den Zeigern, mit denen ich als bisheriger Java-Anwender noch nicht so viel Erfahrung habe.
Hoffe mir kann jemand helfen.

Gruß

Sebastian

Hallo Sebastian!

Wie Du schon sehr richtig vermutest, liegt das Problem tatsächlich an den Zeigern:
Bei setNext() merkst Du Dir die Adresse des Übergabeparameters (!) el, aber am Ende von setNext fällt der aus dem Scope heraus und ist nicht mehr gültig.
Mach’ einfach ein
void setNext(ListElement *el) { next = el; }
daraus und dann funktioniert’s.

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Danke, das war’s :smile: