我有一个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()
类已经有一个Lua状态指针,那么实现CPerson
需要做哪些更改?
Edit1:我不想知道如何将C ++类绑定到Lua,我已经有SWIG为我做这个,我想知道如何在Lua表中调用Lua函数, C ++。
Edit2: CPerson
类和bannana
表都是一般示例,可以假设CPerson
类已经有一个LuaState指针/参考,以及Eat
方法的功能签名可以由回答的人改变。
答案 0 :(得分:10)
忽略任何错误检查......
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);
答案 1 :(得分:-1)
也许“Simpler Cpp Binding”会有所帮助。