• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

Klasse Menü

JacktheRipper83

Anwärter/in
Registriert
12.05.2005
Beiträge
22
Reaktionspunkte
0
Klasse Menü

Hi!

Hab wiedermal ein rießen Problem! Ich soll in C++ eine Klasse Menü mit Zeigern programmieren, welche beim Befehl [addMenuItem ein Neues Menüitem erzeugt und beim befehl ]show] ausgibt.
Es soll irgendwie mit einer Art verketteter Liste programmiert werden, was ich sowieso nicht genau verstehe.

Ich hab schon diverse Möglichkeiten ausprobiert, komm aber zu keinem Ergebniss. Jetzt bin ich ziemlich frustriert und hab keine Ahnung mehr wie das alles angehen soll. :-$
Ich hoffe irgenjemand kann mir helfen!

Lg

Jack the Ripper
 
AW: Klasse Menü

Du initialisierst einfach einen Zeiger, reservierst Speicherplatz für deine Klasse und setzt den zeiger auf diese Speicheradresse.
In der Klasse ist dann neben den Daten wieder ein Zeiger untergebracht, wenn du ein neues Objekt brauchst, prüfst du, ob der Zeiger im aktuell verfügbaren Objekt mit einer Speicheradresse belegt ist, wenn nicht, setzt du diesen Zeiger auf ein neues Objekt, wenn schon, setzt man das nächste Objekt solange auf den zeiger für das aktuelle objekt, bis du beim letzten objekt in der kette bist.

hoffe mal, das is verständlich. *g*
 
AW: Klasse Menü

Vielleicht sollt ichs nochmal versuchen, anders zu erklären.

Angenommen, du hast eine Klasse (zB menue) mit folgenden Objekten:

name (string mit zB 50 zeichen)
p_next (Zeiger, in dem du einfach eine Speicheradresse unterbringen kannst)


Dann erstellst du noch zwei Zeiger:

p_first (Ein Zeiger, der auf das erste Objekt der Kette verweist)
p_aktuell (Ein zeiger, der auf das Aktuelle Objekt der Kette verweist)

Dann reservierst du Speicher für die Klasse (kA, wie das in C++ geht...), beim Reservieren bekommt man normalerweise eine Speicheradresse zurückgeliefert. Diese Adresse legt man auf p_first.
Bsp. in C:
p_first = malloc(menue);
Diese Variable danach nie wieder ändern, sonst findest du den Anfang der Kette nie wieder!

Um ein zweites Objekt in der Liste zu erzeugen geht man nun wie folgt vor:

p_aktuell = p_first;
p_aktuell->name = "examplename";
p_aktuell->p_next = malloc(menue);
p_aktuell = p_aktuell->p_next;

usw.


Auslesen könntest du dann so:

p_aktuell = p_first;
while(p_aktuell)
{
printf("name: %s",p_aktuell->name);
p_aktuell = p_aktuell->p_next;
}
 
Zurück