virtual in c?
-
neín, gibts nicht
-
ich soll von prof. aus eine c++ klasse in c übersetzen. das geht ja mit structs. aber mein problem ist das dumme virtual
-
*Eine* Klasse? Na dann lass es einfach weg. virtual ist nur bei Vererbung interessant.
-
Mit Funktionszeigern kann man (mit viel Mühe) virtuelle Funktionen basteln. Das ist und bleibt dann aber eine Bastelei .... ://
-
Man lese OOP für Dummies - da ist n schoenes Beispiel wie man die vtable in C implementieren kann.
ist recht lustig, aber sinn machts keinen - zeig uns einmal n bisschen code, vielleicht koennen wir dir dann helfen beim umschreiben.
-
Original erstellt von Shade Of Mine:
ist recht lustig, aber sinn machts keinen
-
also eigentlich sind virtuelle funktionen nicht anderes als zeiger auf funktionen, die ihren wert ändern!
@<mike>
wenn du eine c++ klasse in c umschreiben sollst, dann benutz für virtuelle funktionen einfach einen zeiger auf funktionen.
void (*MyVirtualFunc)(void); //definiert einen zeiger auf funktionen wenn du dann die funktion aufrufen willst geht das folgender maßen: void AnyFunction(void) //du brauchst eine funktion... { printf("Hallo!"); } MyVirtualFunc=AnyFunction; //damit du die adresse der funktion in den zeiger eintragen kannst (MyVirtualFunc)(); //ruft jetzt AnyFunction auf
damit bist du also jederzeit in der lage auf irgendeine funktion zuzugreifen. in c++ ist das eigentlich genauso, nur das man halt nicht irgendeine funktion benutzen kann, sondern nur eine ganz bestimmte, die der benutzer nur im zusammenhang einer klasse definieren kann.
was ist denn an zeigern auf funktionen viel mühe ?
wie du oben sehen kannst ist das nichts besonderes!
-
LOL .... und das ganze jetzt mit einer VTab bitte (wgn Klassen und Vererbung). Es ging nicht um reine Funktionszeiger, sondern um virtuelle Funktionen...
-
eben!
es geht NUR um ein paar virtuelle funktionen!
nicht um ein system mit dem man sich virtuelle funktionen selber schreiben kann!
<mike> wollte doch nur etwas hilfestellung für sein "virtuelle-funktionen-problem". wenn ihr dann sagt "das geht nicht" oder "nur mit sehr viel mühe" dann ist das falsch.
meine lösung funktioniert und er muss nur noch copy und paste machen!
cu
-
Wenn ich nur _eine_ Klasse habe die es in C darzustellen gilt, dann brauche ich auch keine virtuelle Funktionen oder Funktionszeiger. Da reichen dann auch normale Funktionen. IMHO.
[ Dieser Beitrag wurde am 27.11.2002 um 14:52 Uhr von mady editiert. ]
-
hab mich damit gerade rumgespielt... ist durchaus komplizierter als es sich anhoert - weil man ja ein vernueftiges interface waren will...