C++ nach C konvertieren



  • Hallo zusammen,

    Früher wurde ja ein C++ durch einen Precompiler nach C umgewandelt
    und dann compiliert.
    Wie das prizipiell geht (VTable, static_cast) ist mir klar.
    Beim static_cast kann in der VTable für alle Objekte gleich "rumgehopst"
    werden.
    Wie funktioniert das bein dynamic_cast?
    Bsp: A erbt von B und C
    Jetzt hab ich ein A Objekt, das ich allerdings als B Objekt behandel,
    wie wird das nach C gecastet?

    EDIT:
    For polymorphic classes (classes with virtual functions), the type_info object is written
    out along with the vtable so that dynamic_cast can determine the dynamic type of a class object at runtime.

    Heißt das er durchsucht eine List nach der type_id und nimmt die zugehörige VTable?
    Also ein type_id name mapping?

    Was mir gerade noch einfällt:
    Wie wirft man denn eine Exception?

    Gruß,
    CSpille

    PS: Nur zum Verständnis, ich will kein C++ emulieren



  • CSpille schrieb:

    Was mir gerade noch einfällt:
    Wie wirft man denn eine Exception?

    Vielleicht könnte man das durch setjmp()/longjmp() realisieren...



  • CSpille schrieb:

    Früher wurde ja ein C++ durch einen Precompiler nach C umgewandelt

    wie kommst du zu der vorstellung?



  • Cool...
    Damit kann man das (glaub ich) realisieren.

    thx



  • c.rackwitz schrieb:

    CSpille schrieb:

    Früher wurde ja ein C++ durch einen Precompiler nach C umgewandelt

    wie kommst du zu der vorstellung?

    Naja, CFront, Stroustrups erster C++-Compiler, wurde in "C with classes" geschrieben, was im wesentlichen nur ein Präprozessor für C war. Inwieweit dieses C++ aber schon das konnte, was es jetzt kann, weiß ich aber nicht.


Anmelden zum Antworten