例如,我有一个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
,传递一个参数。
既然是用 C++ 实现的,假设类已经有一个 Lua 状态指针CPerson
,需要做哪些改变来实现?Eat()
CPerson
Edit1:我不想知道如何将 C++ 类绑定到 Lua,我已经有 SWIG 为我做这件事,我想知道如何从 C++ 调用 Lua 表中的 Lua 函数。
Edit2:类CPerson
和bannana
表都是通用示例,可以假设CPerson
该类已经有一个 LuaState 指针/引用,并且该Eat
方法的函数签名可以由回答的人更改。