我正在尝试捕获一个函数指针以传递给一个仿函数,但我不明白为什么我不能。
函子类:
template <class C>
class MyFunctor : public BaseFunctor {
public:
typedef long (C::*t_callback)(const long, const char *);
MyFunctor (void) : BaseFunctor(), obj(NULL), callback(NULL) {}
virtual long operator() (const long a, const char *b) {
if ( obj && callback ) {
(obj->*callback)(a,b);
}
}
C *obj;
t_callback callback;
};
代码的其他地方:
函数签名是long C::Func (const long, const char *)
MyFunctor funky;
funky.obj = this;
funky.callback = Func;
然后我得到错误:
... function call missing argument list; ...
为什么这不起作用?
编辑:在完成以下建议时,我遇到了一个简单的解决方案来使我的特定实施工作。
funky.callback = &C::Func;