Problematik von reinterpret_cast



  • ich gebe euch ja wohl recht; in letzter zeit musste ich allerdings - gezwungenermaßen - sehr viel mit casts arbeiten (uni 🙄 ) - und bevor ich dreimal in einer zeile mit static_cast von double nach int castet, nehme ich lieber den cast in funktionsnotation (oder - je nachdem - den c-cast); und zwar genau wegen der lesbarkeit (lustigerweise).

    sobald vererbung im spiel ist und man castet - selbst wenn es "nur" ein static_cast ist (in dem zusammenhang wahrscheinlich sogar noch als downcast), sollte man sich imo ein bisschen mehr gedanken darüber machen als bloß "geht nicht, dann halt casten".



  • Vielen Dank für eure ausführlichen Erläuterungen bis jetzt!

    Dass reinterpret_cast meistens undefiniert ist, hab ich jetzt nicht gewusst. Zumal ich ihn eigentlich nie benutze.
    Wo setzt man reinterpret_cast noch am ehesten ein? Wenn einen die Bitmuster bestimmter Variablen interessieren?



  • Typischerweise ist es notwendig in bestimmten APIs (hier WinAPI) die Zeiger auf Objekte und Strukturen mit entsprechenden LPARAM/WPARAM/LRESULT Werten (32bit/64bit Wert) übergeben.

    Diese Werte muss man letzten Endes mit reinterpret_cast auf den eigentlichen Zeigertyp bringen.



  • Nexus schrieb:

    Vielen Dank für eure ausführlichen Erläuterungen bis jetzt!

    Dass reinterpret_cast meistens undefiniert ist, hab ich jetzt nicht gewusst. Zumal ich ihn eigentlich nie benutze.
    Wo setzt man reinterpret_cast noch am ehesten ein? Wenn einen die Bitmuster bestimmter Variablen interessieren?

    Wir müssen in unserer Anwendung Pointer auf verschiedene Handles an LabView weitergeben. LabView kennt aber keine Pointer, so dass wir diese nach long konvertieren und in C-/C++-Funktionen, denen sie übergeben werden, wieder zurückcasten. In unserem Source wird das zwar immer über C-Casts gemacht (zum großen Teil sind das auch C-Funktionen), trotzdem wäre das ein typischer Fall für den reinterpret_cast.


Anmelden zum Antworten