Всем привет!
Встала задачка подсовывать одной сишной библиотеке свои крестовые колбэки, да вот только я хочу, чтобы они были во всю полиморфными, а библиотека естественно требует или статик-мемберы класса, или не-члены класса. Пробовал примерно вот так обмануть компилятор - не вышло на этапе выполнения:
typedef (void *pF)(int) foo;
class A
{
private:
static foo pf;
public:
void f(int);
void register_cb()
{
// some library usage code
l.callback=pf;
}
A()
{
pf=foo(&A::f);
}
};
foo A::pf=NULL;
Как видите, пока даже с обычными, невиртуальными членами класса не работает.
Если кому-то кажется, что я хочу странного (создавать виртуальные колбэки), то пусть он расскажет, как внутри устроены, например, boost::thread/std::thread и почему им достаточно callable-объектов, ибо задача в конечном итоге та же (что там в pthread передается)?