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.


Anmelden zum Antworten