LINUX.ORG.RU

C++ и замыкания


0

0

как это реализовать, есть какие-нибудь предложения?

Т.е. как я это представляю,
есть шаблон замыкание:

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.
можно ли это как то обойти?

anonymous

Посмотри в бусте.

hbee ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.