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