как это реализовать, есть какие-нибудь предложения?
Т.е. как я это представляю,
есть шаблон замыкание:
template<typename T> struct Closure {
typedef void (*func)(T val, void *userdata);
func f;
void *userdata;
Closure()
{
f=NULL;
}
void operator()(T val)
{
if (f)
f(val, userdata);
}
};
есть скажем класс Window и у него событие MouseMove
class Window {
public:
Closure<...> MouseMove;
};
и есть класс Application который хочет назначить обработчик этого события
class Application {
public:
Application()
{
MouseMouve.f=OnMouseMove;
MouseMove.userdata=this;
}
private:
static void OnMouseMove(...);
};
проблемма в том что для разных типов событий(
т.е. MouseMove operator() будет вызываться с параметрами int,int,
CheckButtonChange будт вызываться с параметром bool)
Closure каждый раз придется описывать кучу раз, для различного количества параметров и для void.
можно ли это как то обойти?