我有这个定义结构的代码(传入的是简单结构)
#define FUNCS_ARRAY 3
struct func
{
void (AA::*f) (incoming *);
int arg_length;
};
func funcs[FUNCS_ARRAY];
然后在 AA 类主体中,我像这样定义指针数组:
funcs[0] = { &AA::func1, 4 };
funcs[1] = { &AA::func2, 10 };
funcs[2] = { &AA::func2, 4 };
当我尝试通过数组调用其中一个函数时,我得到编译错误:
如果我这样调用它(p 传入):
(*funcs[p->req]->*f)(p);
我收到此错误:
error: no match for ‘operator*’ in ‘*((AA*)this)->AA::funcs[((int)p->AA::incoming::req)]’
当我尝试这样称呼它时:
(funcs[p->req]->*f)(p);
我越来越 :
error: ‘f’ was not declared in this scope
当我尝试这个时:
(funcs[p->req].f)(p);
error: must use ‘.*’ or ‘->*’ to call pointer-to-member function in ‘((AA*)this)->AA::funcs[((int)p->AA::incoming::req)].AA::func::f (...)’, e.g. ‘(... ->* ((AA*)this)->AA::funcs[((int)p->AA::incoming::req)].AA::func::f) (...)’
访问 struct 中的函数指针的正确方法是什么?