ファンクタに渡す関数ポインタをキャプチャしようとしていますが、なぜできないのかわかりません。
ファンクタ クラス:
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;