E2034 'type1' 型は 'type2' 型に変換できない (C++)

提供: RAD Studio
移動先: 案内検索

コンパイラのエラーと警告(C++):インデックス への移動

代入,初期化,または式で,指定された型変換を実行する必要がありますが,この変換は不正です。

C++ では,2 つの関数のシグニチャが同じである場合にのみ,コンパイラは関数ポインタを別の関数ポインタに変換します。シグニチャとは,関数の引数と戻り値の型を指します。例を示します。



 myex( int );
 typedef int ( *ffp )( float );
 test()
 {
    ffp fp = myex; //エラー
 }



myex は引数として int を受け取り,fp は引数として float を受け取る関数へのポインタなので,コンパイラはこの変換を自動的には行いません。

この変換を行う場合は,型キャストが必要です。



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