void f(string str,int i )
{
cout<<str.c_str()<<endl;
cout<<i<<endl;
}
typedef void (*PF)(int i,string str);
int _tmain(int argc, _TCHAR* argv[])
{
PF pf=(PF)(void*)&f;
pf(10,string()); //runtime-error
return 0;
}
必要に応じて、データ型が消去されf
たアドレスを使用して関数を呼び出す必要があります (上記のコードなど)。f
ただし、このソリューションでは、コンパイル中にデータ型をチェックできないため、安全でない関数呼び出しが発生する可能性があります。パラメータの型が引数と異なる場合にコンパイラにエラーを報告させる方法はありますか?
このようなもの:</p>
void f(T1 i,T2 j)
{
T1 p* = new i.real_type; //if i.real_type is different from T1, it will lead a compiling
....
}
とても感謝しています。