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
....
}
我非常感谢。