저는 펑터에 함수 포인터를 캡처하려고하는데 왜 그럴 수 없는지 이해하지 못합니다.C++에서 매개 변수를 사용하여 함수 포인터를 만들 수 있습니까?
은 Functor 클래스 :
다른 곳에서 코드의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;
};
:
... function call missing argument list; ...
함수 서명이 다음 long C::Func (const long, const char *)
MyFunctor funky;
funky.obj = this;
funky.callback = Func;
나는 오류입니다3210
왜 작동하지 않습니까?
편집 : 아래의 제안을 통해 나는 특정 구현 작업을 수행하는 간단한 솔루션을 발견했습니다.
funky.callback = &C::Func;
당신은 내가이 기능의 인식이다 표준 기능 – aaronman
를 사용하지 않는 이유를. 나는 STL의 어떤 것에도 혐오감이 없다. 답변을 예로 들어 주시면 받아 들일 수 있습니까? 또한 C++이 매개 변수와 std :: function의 필요성을 처리 할 수없는 이유에 대해 자세히 설명 할 수 있습니까? – Zak
괜찮 았던 것은 실제로 당신이하려고했던 것을 얻지 못했지만 어떻게 함수 포인터 대신 작동하는지에 대한 예제를주었습니다. – aaronman