类非静态函数指针传递调用
26行的错误,怎么解决?
不能改CallFunc这个类的结构。
最好只改call1.
#include <stdio.h>
class CallFunc;
typedef void (CallFunc::*FP)(int x);
class CallFunc
{
public:
void set(FP fp)
{
m_fp = fp;
//(this->*fp)(5);
}
void show(int x)
{
printf("x = %d\n", x);
}
FP m_fp;
};
CallFunc g_ss;
void call1()
{
g_ss.set(&CallFunc::show);
g_ss.m_fp(5);
}
void main()
{
call1();
}
[解决办法]
(g_ss.*(g_ss.m_fp))(5);