Ich arbeite daran, eine dynamische verknüpfte Liste in C zu implementieren, um meine C-Kenntnisse aufzufrischen. Hier ist die einfache Struktur, die ich zur Darstellung einer LinkedList verwende:
typedef struct List
{
Node_t* head;
Node_t* tail;
uint32_t length;
void (*add)(Node_t* head, void* data);
} List_t;
Ich schreibe das alles in eine eigene C-Datei, in der Hoffnung, dass ich sie in eine andere C-Datei einfügen und die von mir geschriebene Implementierung der verknüpften Liste verwenden kann.
Sie werden feststellen, dass ich einen Zeiger auf eine Funktion habe, die einen Knoten zu der verknüpften Liste hinzufügt. (Ich habe noch mehrere andere Funktionen als add, aber ich wollte diese Funktion zuerst herausfinden)
Wenn ich diese verknüpfte Liste jetzt verwenden würde, müsste ich sie folgendermaßen aufrufen
List_t* list = GetList(); /* this is a constructor like method I wrote*/
list->add(list->head, someData);
Ist es möglich, es in einer OO-Art und Weise zu kodieren, so dass alles, was ich tun müsste, der Aufruf ist:
list->add(someData);
Ohne den Kopf der Liste an die Funktion add() zu übergeben? Mein Instinkt sagt mir, dass es nicht möglich ist, aber ich mag die Idee, dass meine verknüpften Listen auf diese Weise funktionieren.
-Akron
Bearbeiten: Der Verweis auf add wurde korrigiert, um der Tatsache Rechnung zu tragen, dass list ein Zeiger ist.
Edit: Es sieht so aus, als ob der allgemeine Konsens nein lautet. Danke für die Tipps/Antworten