E2034 'type1' 型は 'type2' 型に変換できない (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
}