virtual in c?



  • hoi!
    gibts sowas wie virtual in c?

    danke



  • Es gibt keine Vererbung und keine Methoden, also inwiefern sollte virtual sinnvoll sein??



  • 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

    www.gtk.org



  • 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.

    @mady

    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...


Anmelden zum Antworten