class Test
{
public:
int maxData(int x,int y)
{
return (x>y)?x:y;
}
int process(int x,int y,int(* fun)(int,int))
{
return (* fun)(x,y);
}
void mainTest()
{
int result = process(1,2,maxData);
printf("%d",result);
}
};void main()
{
Test t;
t.mainTest();
}
编译出错,Test.cpp(16) : error C2664: 'process' : cannot convert parameter 3 from 'int (int,int)' to 'int (__cdecl *)(int,int)'
None of the functions with this name in scope match the target type
为什么呢?
应该怎么写才对呢?
解决方案 »
- VC诡异的问题,如何查看cpp对应的h文件
- 怎样记录用户登陆系统的日期和时间
- SetItemData()问题~~
- 生成一个工程时,它的画面大小是default 的,想在程序中改变其初始显示大小,该如何操作?
- 请问高手如何使Clistview(report style)的标题栏不响应点击(给分)
- 如何捕获窗口的最小化消息呢?
- 如何设置titlebar?
- MapWindowPoints什么时候使用,举个使用这个函数的例子(代码 或者 哪个程序用这个函数实现什么效果)
- 我的vc++6.0编辑器每次换行或设断点就不动了,等30-40秒之后才有反应,哪位同仁遇到过这种情况吗?
- getlocaltime获取时间异常,年份和月份为异常值?
- 超级弱的问题,近来看得人都会的问题
- 哪位大虾知道vs2005中文正式版哪里可以下载到? 千万不要给个微软试用版下载地址 谢谢!!!!!!
返回的不是int
你想返回的是指针,还是int整型啊?
{
public:
static int maxData(int x,int y)
{
return (x>y)?x:y;
}
int process(int x,int y,int(* fun)(int,int))
{
return fun(x,y);
}
void mainTest()
{
int result = process(1,2,maxData);
printf("%d",result);
}
}; 把maxData函数定义为静态函数即可.
弱弱的在问一句,为什么声明static就可以了呢
我这样理解:声明为static后当构造类对象的时候就为这个函数分配了空间不是static不会分配