我试了一下,简化成了下面的样子(当然比你的例子复杂一点).
本质上,我需要在gfunc(实际上在另外一个文件里面)里面去调用执行myclass里面的函数指针.所以写得有点啰嗦:
#include <iostream>
using namespace std;
typedef struct {
int (*add)(int a, int b);
} GFUNC_T;
GFUNC_T gfun;
class Test
{
public:
Test();
public:
int add(int a, int b);
int (*padd_func)(int a, int b);
};
int (Test::* padd_func)(int, int) = &Test::add;
Test::Test()
{
// register function pointer to gfun
gfun.add = padd_func;
//gfun.add = &this->add;
}
int Test::add(int a, int b)
{
return a+b;
}
int main()
{
Test mytest;
cout << mytest.add(23, 44) << endl;
if (gfun.add != NULL)
{
cout << gfun.add(10,20);
}
return 0;
}
如上,在构造函数里面去注册函数
如果是 //gfun.add = &this->add;编译就会报member function不能做函数指针的错.
但是,改成 gfun.add = padd_func;之后,似乎是没有注册上.我实在想不到为神马了.
或许哪里犯了一个很低级的错误.
麻烦看一下哪里的问题.
【 在 dormouseBHU 的大作中提到: 】
: class Test
: {
: public:
: ...................
--
FROM 1.202.141.*