C++ typecasting
-
Hallo,
folgendes kleines Testprogramm läßt sich problemlos mit MinGW kompilieren und linken:
int funk(void *ptr) { // Mach irgendwas return 1; } int main() { int a = funk((void*)(main)); }Wenn ich aber den C-Style - Cast weglasse, oder aber versuche, static_cast<void *> zu verwenden, verweigert der Compiler seinen Dienst.
Einmal mit der Meldung: invalid conversion from ...
und einmal mit: invalid static_cast from ...Normalerweise sollte man aber doch sämtliche C-Style Casts durch C++ Casts ersetzen können ...
In diesem Fall finde ich keinen Weg dazu.
dynamic_ und reinterpret_ casts gehen erwartungsgemäß auch nicht.
Heisst das, daß es tatsächlich Fälle gibt, in denen man C-Style Casts nicht vermeiden kann?
-
MSVC schluckt den static_cast. Wobei man überhaupt keinen Cast benötigt. Alle Zeiger (bis auf Member-Zeiger) lassen sich implizit in void* casten.
Gruß
Don06
-
Mhm, also ein Fehler des g++ von MinGW?
-
mein GCC beschwert sich mit static_cast zwar auch(da ich void* nie benutzt habe, kann ich dir nicht sagen ob zurecht), aber mit reinterpret_cast gehts.
-
Don06 schrieb:
Alle Zeiger (bis auf Member-Zeiger) lassen sich implizit in void* casten.
Nur Zeiger auf Daten, für Funktionszeiger gilt das nicht.