我有一个Lua表/对象:
bannana
而这个Lua表在其内部有一个函数调用chew
,它接受一个参数
bannana.chew(5)
我也使用过SWIG,例如有一个类CPerson
:
class CPerson { public: // .... void Eat(); // .... };
我可以从Lua获取此对象的实例:
person = engine:getPerson()
我需要做的是以下Lua代码:
person = engine:getPerson() person:Eat(bannana)
在哪里person:eat
调用表中的chew
函数bannana
,传递一个参数.
既然CPerson
是用C++实现的,那么Eat()
假设CPerson
类已经有一个Lua状态指针,需要进行哪些更改?
Edit1:我不想知道如何将C++类绑定到Lua,我已经有SWIG为我做这个,我想知道如何从C++中调用Lua表中的Lua函数.
EDIT2:所述CPerson
类和bannana
表,都是通用的示例,可以假设的是,CPerson
类已经有一个LuaState指针/引用,并且所述的函数签名Eat
方法可以由人应答而改变.
忽略任何错误检查......
lua_getglobal(L, "banana"); // or get 'banana' from person:Eat() lua_getfield(L, -1, "chew"); lua_pushinteger(L, 5); lua_pcall(L, 1, 0, 0);