Приведение между void * и указателем на функцию-член

Я в настоящее время использую GCC 4.4, и яу меня довольно головная боль междуvoid* и указатель на функцию-член. Я'я пытаюсь написать простую в использовании библиотеку для привязки объектов C ++ к интерпретатору Lua, например:

LuaObject lobj = registerObject(L, "foo", fooObject);
lobj.addField(L, "bar", &Foo::bar);

Мы сделали большую часть этого, за исключением следующей функции (которая специфична для определенной сигнатуры функции, пока у меня не будет возможности обобщить ее):

template 
int call_int_function(lua_State *L) 
{
    // this next line is problematic
    void (T::*method)(int, int) = reinterpret_cast(lua_touserdata(L, lua_upvalueindex(1)));
    T *obj = reinterpret_cast(lua_touserdata(L, 1));

    (obj->*method)(lua_tointeger(L, 2), lua_tointeger(L, 3));
    return 0;
}

Для тех из вас, кто не знаком с Луа,lua_touserdata(L, lua_upvalueindex(1)) получает первое значение, связанное с замыканием (в этом случае это 'указатель на функцию-член) и возвращает его какvoid*, GCC жалуется, что ->void* void (T::*)(int, int) неверный актерский состав. Есть идеи как обойти это?

Ответы на вопрос(5)

Ваш ответ на вопрос