Документация luabind гласит, что для вызова производного от Lua виртуального члена из C ++ вы создаете класс-оболочку, производный от luabind::wrap_base
, и вызываете функцию следующим образом:
class BaseWrapper : public Base, public luabind::wrap_base
{
public:
virtual void foo()
{
call<void>("foo");
}
};
Пока все хорошо -это много работает.
Но как мне реализовать BaseWrapper::foo()
, чтобы вызвать переопределенный foo
(на стороне Lua) как сопрограмму (используя resume_function
) вместо прямого вызова с помощью call
?
Вот как это делается с функциями, не являющимися членами:
luabind::object func = luabind::globals(L)["bar"];
luabind::resume_function<void>(func);
Я думаю, что мне нужно знать, как получить func
для foo
(как реализовано в производном от Lua классе)и тогда моя существующая логика resume_function
должна работать как есть.