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ß,
CSpillePS: 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.