static_cast



  • Aus anderen Beiträgen kann ich mich erinnern, daß es dort immer gesagt wurde, daß für Typkonversionen gecastet werden soll. Es hieß, weil die alten C-Konversionen brutal seien.

    Kann mir mal jemand den Grund erklären. Habe es bis heute nicht verstanden.
    Bei untenstehendem Code gibt der Compiler weder bei dieser

    Data=GetTypeData((TTypeInfo *) Instance->ClassInfo());
    

    noch bei dieser Möglichkeit einen Fehler (habe es allerdings noch nicht laufen lassen und Ergebnis gesehen).

    Data=GetTypeData(static_cast<TTypeInfo *>(Instance->ClassInfo()));
    

    Danke schon mal im Voraus



  • hier isses kein problem. aber der c-cast castet dir auch const weg und überhaupt alles. das macht static_cast nicht.
    wenn du also const verwendest, umd manche leichtsinnsfehler vom compiler aufgedeckt zu kriegen, dann ist der c-cast kontraproduktiv, weil er das const wegmacht und der fehler nicht entdeckt wird.



  • Danke für die Antwort.
    Aber um ehrlich zu sein, so ganz verstehe ich es nicht.
    Hättest Du mal ein kurzes Beispiel.



  • wie verwendet man denn einen const-Cast und was hat das für einen Sinn???



  • Was volkard meinte ist

    const char* x="Hallo";
    
    char* p = (char*)x; // nu kann man über p in das konstante x schreiben
    
    char* p = static_cast<char*>(x); // geht nicht, hier brauchts const_cast
    char* p = const_cast<char*>(x);
    


  • Danke, verstanden.


Anmelden zum Antworten