Verkettete Liste bei Objekten c++

godofkills

Lt. Commander
Registriert
Dez. 2009
Beiträge
1.997
Hallo,
hätte da mal eine Frage.

Wie kann ich eine verkette Liste schreiben mit Objekten.

Wie es mit struct funktioniert weiß ich ja

struct strvab
{
char vname[30];
strvab *next;
};
struct strvab *head,*end,*pointer;

So aber wie kann ich dieses Prinzip auf ein Objekt anwenden?
 
Zuletzt bearbeitet:
moin!

da machste ein Konstruktor der dir den zeiger und deine daten erstellt bzw. initialisiert
 
mhhh.....also im konstruktor erzeuge ich erst das objekt der klasse und dann den next pointer?
 
ehrlich gesagt finde ich die Fragestellung sehr "nichtssagend"... das Prinzip müsste sich ja 1:1 auf Klassen übertragen lassen...

Was willst du denn genau machen? Warum müssen es Klassen sein? Ist es sinnvoll, dafür eine Klasse zu verwenden? Muss die Klasse selbst wissen, wie sie gespeichert wird?

Wäre es nicht besser, die zu speichernden Daten eben in einer anderen Klasse "umzuverpacken"?
Im Gunde wie oben, nur dass statt "char vname[30];" eben ein Zeiger auf die Klasse steht, die man verketten will?
 
also ich habe den auftrag ein spiel zu erstellen. pflicht ist dabei oop anzuwenden. wie ich den rest mache ist eig egal. nur dachte ich mir das es ein plus punkt gibt wenn ich dynamische speicherverwatlung anwende. so und es gibt eine klasse spieler. und ein objekt von dieser klasse steht für ein spieler. und wäre ja toll wenn man so viele objekte erstellen kann wie der user es will.
 
Es gibt eher Plus-Punkte, wenn du deine Klassen vernünftig definierst...

Warum sollte sich ein Spieler für einen "Nächsten Spieler" interessieren?

Wenn dann würde ich dir empfehlen entweder selbst eine Container-Klasse zu schreiben, welche entweder
- die Spieler-Klasse aufnehmen kann
- beliebige Daten aufnehmen kann (dann würden sich Templates anbieten)
oder eben eine Container-Klasse aus der Standardbilbiothek zu verwenden...

OOP heißt auch, dass man das Rad nicht immer neu erfinden muss.


Wenn du wirklich eine eigene Container-Klasse machen willst:
-> diese kann gerne mit einer verketteten Liste arbeiten. Aber das geht die darin gespeicherten Klassen nun mal gar nichts an.

Und wenn du dort dann eine verkettete Liste nimmst, würde es sich eben anbieten mit einem Hilfs-Struct zu arbeiten
struct ListNode
{
void* data;
struct ListNode* next;
}

hab einfach mal void* genommen, besser wäre es wie gesagt mit Templates...
 
Zuletzt bearbeitet:
ok. so lange hatte ich oop noch nicht das ich die syntax weiß bzw wie ich das anwenden kann mit der conatiner klasse.aber wie kann ich es dann realisieren, dass der beutzer entscheidet wieviele objekte(spieler) er hinzufügen möchte.
 
Arrays lassen sich auch dynamisch im Speicher anlegen, ist kein großes Problem...

Und wenn du keine Standard-Container-Klasse schreiben willst, dann schreib dir halt selbst eine Spieler-Container-Klasse... ist nicht wirklich aufwändiger als die Verkettung in die Spieler-Klasse selbst reinzumachen - nur hat sie eben dort rein gar nichts zu suchen...
 
hasst du zufällig ein link mit einer kleinen hilfe wo ich mir das anschauen kann wie das funzt
 
Du legst 10 Instanzen der Klasse spieler an. Und die sind a[0], a[1], a[2], ... a[9]. Natürlich sind das dann 10 verschiedene Instanzen. a ist hier auch kein Objekt. a ist ein Array.

Diese 10 Objekte werden vermutlich alle gleich initialisiert...

Besser finde ich es, Zeiger auf Objekte zu speichern...

speiler* a[10]; // 10 Zeiger

und am besten sogar das Array selbst noch dymanisch erzeugen...
 
Zuletzt bearbeitet:
nagut dann werde ich das so machen. danke dir für deine hilfe so spät nachts :D
 
dynamisch könnte man ein Array auf Spieler-Zeiger wohl so machen
spieler** a;
a = new spieler[10];
for (int i = 0; i < 10; i++) *a = new spieler()

aber ka ob das wirklich funktioniert
 
Zurück
Oben