Vererbung in C
-
Hallo,
wollte nur ganz kurz mal anfragen, ob es mit ein paar Tricks irgendwie möglich ist, Vererbung aus C++ in C nachzubauen.
Kein compilerspezifischer Kram!
-
http://www.mathematik.uni-ulm.de/sai/ws96/seminar/neher/
http://www3.informatik.uni-erlangen.de/Lehre/UMLEmbSys/WS2002/folien/12-oo2c.pdf
-
Du musst dir eben einen VTable nachbauen. Wie du das am besten machst kommt darauf an, wie dein Objektsystem aussehen soll (eher dynamisch Smalltalk mäßig oder eher statisch wie in C++)
prinzipiell sieht das so aus
#include <stdio.h> void funA() { puts("A"); } struct parent { void (*method)(); } objA = { .method = funA }; void funB() { puts("B"); } void foo() { puts("different method"); } struct child { struct parent parent; void (*othermethod)(); } objB = { .parent.method = funB , .othermethod = foo }; int main() { objA.method(); objB.parent.method(); }
(kann man mit ein paar Macros noch alles verstecken. Aber das Prinzip sollte verständlich sein)
-
Könntest z.B. http://en.wikipedia.org/wiki/GObject verwenden.
Wenn du selber was schreiben willst könntest du dich vielleicht hier inspirieren lassen.