luabind のドキュメントには、Lua 派生の仮想メンバーを C++ から呼び出すように記載されています。派生したラッパー クラスを作成し、次luabind::wrap_base
のように関数を呼び出します。
class BaseWrapper : public Base, public luabind::wrap_base
{
public:
virtual void foo()
{
call<void>("foo");
}
};
これまでのところとても良いです-私はこれだけ働いています。
しかし、(Lua 側で)BaseWrapper::foo()
オーバーライドされたものを で直接呼び出すのではなく、( を使用して)コルーチンとして呼び出すように実装するにはどうすればよいですか?foo
resume_function
call
これは、非メンバー関数で行う方法です。
luabind::object func = luabind::globals(L)["bar"];
luabind::resume_function<void>(func);
私が知る必要があるのはfunc
、foo
(Lua 派生クラスによって実装されているように) 取得する方法であり、既存のresume_function
ロジックはそのまま機能するはずです。