Einfach verkettete Liste mit Objekte

Ich habe den Fehler gefunden.
==>Wenn du ihn wissen willst, musst du diese Box markieren ;)
In der Schleife muss vor next das hier: listenanfang->
 
Hallo ComFreek,

tolle Sache mit . Wieder etwas gelernt.
Habe es so gemacht, wie Du geschrieben hast, trotzdem ist noch ein Fehler drin.
Ich versuche, diesen zu finden.

Gruß
lyon64


C++:
#include "stdafx.h"

using namespace System;

ref class listenelement {
String ^daten;
listenelement ^next;

public:
Void datenSetzen(String ^datenneu); 
Void anhaengen(String ^datenneu);
Void ausgeben();
};

//die Zeichenkette in das Element schreiben
Void listenelement::datenSetzen(String ^datenneu) {
daten=datenneu;
}

//neues Element am Ende der Liste anhängen
Void listenelement::anhaengen(String ^datenneu) {
//hat next den Wert nullptr?
//dann ein neues Element anhängen
if (next == nullptr) {
next = gcnew listenelement;
next->daten=datenneu;
//nullptr wird automatisch zugewiesen!
}
//sonst die Methode für next noch einmal aufrufen
else
next->anhaengen(datenneu);
//nur zur Veranschaulichung
Console::WriteLine("Daten {0} wurden eingefügt.",datenneu);
}

//Alle Elemente der Liste ausgeben
Void listenelement::ausgeben() {
//den ersten Eintrag ausgeben
Console::WriteLine("{0}",daten);
//wenn das Ende nicht erreicht ist, die Methode für next erneut aufrufen
if (next != nullptr)
next->ausgeben();
}

int main(array<System::String ^> ^args)
{
//Handle auf den Anfang der Liste
listenelement ^listenanfang;
listenelement ^aktuellesElement;

//das erste Element per Hand erzeugen
listenanfang = gcnew listenelement;
//Zeichenkette in das erste Element schreiben
listenanfang->datenSetzen("Element 1");
aktuellesElement = listenanfang;

//in einer Schleife mehrere Elemente anfügen
for (Int32 schleife=1;schleife<301;schleife++) 
{
listenanfang->anhaengen("Element "+schleife);
aktuellesElement = listenanfang->next;
}
//die Liste ausgeben
listenanfang->ausgeben();

return 0;
}
 
Hallo Sheel,

die Fehlermeldung war:

1>.\Test1.cpp(61) : error C2248: "listenelement::next": Kein Zugriff auf private Member, dessen Deklaration in der listenelement-Klasse erfolgte.

Gruß
lyon64
 
Hallo ConFreek,

danke, für Deine Antwort. Das Programm läuft, mit Deiner Hilfe, seit gesten.
Ich tu mich im Moment einfacher, eine Aufgabe zu lösen, wenn ich eine gewisse "Starthilfe" habe.

Besten Dank

Gruß
lyon64
 
Zurück