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

关于函数作为变量的有关问题

2012-02-14 
关于函数作为变量的问题比如我定义两个函数voidfunc1(inta,intb){}voidfunc2(func(inta,intb),floatc){}然

关于函数作为变量的问题
比如我定义两个函数  
void   func1(int   a,int   b){}

void   func2(func(int   a,int   b),float   c){}
然后我引用的时候这样
main()
{
...
func2(func1,c);
}
这样的操作是可行的
可是如果我定义两个类
class   A
{
    void   func1(int   a);
    void   run();
};
class   B
{

    void   func2(void   func(int   c),...);
};
然后我的类A的run是这样写的
void   A::run()
{
      B::func2(func1,...);
}
这样就运行不了,如果碰到这种情况怎么办,
编译问题是
error   C2664:     不能将参数   1   从“void   (int   )”转换为“void   (__cdecl   *)(int)
这是怎么一回事,请高手指点

[解决办法]
少括号了
[解决办法]
void Bfunc(void (A::*func(int c))
{
int d;
func(d);
};
===============
func(d);这里不对。
非静成员函数指针怎么可能像全局函数似的在没有对象的情况下被调呢?你让它操作哪个对象?
你可以这样:

void Bfunc(void (A::*func(int c), A& a)
{
int d;
a.*func(d);
};

然后
void A::Afunc2()
{
B::getObj().Bfunc(&A::Afunc1, *this);
}

热点排行