读书人

编译出错提示达人解答下!该如何解决

发布时间: 2012-02-17 17:50:42 作者: rapoo

编译出错提示,达人解答下!
error C2664: 'SetTimerCallback ' : cannot convert parameter 1 from 'int (void) ' to 'int (__cdecl *)(void) '
None of the functions with this name in scope match the target type


编译出错,什么意思啊???



[解决办法]
那个参数变量声明的时候 加上(__cdecl *)
[解决办法]
SetTimerCallback前面加上 __cdecl
[解决办法]
这个很可能是编译器的问题哦。VC6.0经常出现各种类型转换错误,主要是不支持标准的。换个编译器试试
[解决办法]
看得出完全是程序写法有问题 'int (void) ' to 'int (__cdecl *)(void)
[解决办法]
函数定义类型和你使用时调用函数的类型不一致,而又不能强制转换所以就只好报错了
[解决办法]
应该是参数定义问题
[解决办法]
回调函数声明和定义有规定的格式


[解决办法]
你是用了调用比如:
SetTimerCallBack(foo,****);
那么在函数foo申明时,需要申明为:
int __cdecl foo();
而不是
int foo();

[解决办法]
成员函数比普通函数多出一个参数,即this指针
所以类型不匹配

[解决办法]
当然不能将成员函数指针传递给callback函数了。
这里你只能传一个全局函数的指针。
因为类成员函数实际上还有一个this指针是函数的参数,当然同全局的函数的类型是完全不同的。

读书人网 >C++

热点推荐