首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

麻烦 cunsh(村少)老大再帮忙看看,关于函数指针和重载了() 的对象,还是有点不解,该如何解决

2012-02-04 
麻烦 cunsh(村少)老大再帮忙看看,关于函数指针和重载了() 的对象,还是有点不解http://community.csdn.net/

麻烦 cunsh(村少)老大再帮忙看看,关于函数指针和重载了() 的对象,还是有点不解
http://community.csdn.net/Expert/topic/5667/5667807.xml?temp=.6560938

我是这么想的,pfun(a);   ,pfun   是函数指针。
假设是   fun   ,那   pfun(a)   ==>   fun(a)
假设是对象   obj,那   pfun(a)   ==>   obj(a)
正好   obj   对象重载了   ()   ,符合这要求。(下面代码我用的是匿名对象,出错,为什么?)


#include   <iostream>
using   namespace   std;


void   fun(int   a)
{
cout < < "pfun():   " < <a < <endl;
}

class   AA
{
public:
void   operator()(int   a)
{
cout < < "operator():   " < <a < <endl;
}
};

void   show(void   (*pfun)(int   ),int   a)
{
pfun(a);
}

int   main()
{
void   (*pfun)(int   a);
pfun=fun;
show(pfun,3);
show(AA(),5);
return   0;
}

[解决办法]
void show(void (*pfun)(int ),int a)
{
pfun(a);
}

函数对象可以隐式地转成函数指针??

[解决办法]
像你的show函数. 要是不知道给它传递的是函数指针还是函数对象的话. 用模板. 编译的时候就会推出参数的类型.

template <class FUN>
void show(FUN pf,int a)
{
pf(a);
}

热点排行