E2034 Konvertierung von 'typ1' nach 'typ2' nicht möglich (C++)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Compiler-Fehler und -Warnungen (C++) - Index

Für eine Zuweisung, eine Initialisierung oder einen Ausdruck ist die angegebene Typumwandlung erforderlich, aber die Umwandlung ist unzulässig.

In C++ konvertiert der Compiler einen Funktionszeiger in einen anderen nur dann, wenn die Signatur der beiden Funktionen übereinstimmt. Signatur bezieht sich auf die Argumente und den Rückgabetyp der Funktion. Ein Beispiel:



 myex( int );
 typedef int ( *ffp )( float );
 test()
 {
    ffp fp = myex; // Fehler
 }



Da myex ein int-Argument hat, fp dagegen ein Zeiger auf eine Funktion mit einem float-Argument ist, konvertiert der Compiler nichts.

Führen Sie in Fällen, in denen dies beabsichtigt ist, eine Typumwandlung durch:



 myex( int );
 typedef int ( *ffp )( float );
 test()
 {
    ffp fp = (ffp)myex;  // ok
 }