关于函数作为变量的问题
比如我定义两个函数
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);
}