C++ 从C+;调用Lua表中的函数+;

C++ 从C+;调用Lua表中的函数+;,c++,lua,swig,C++,Lua,Swig,例如,我有一个表/对象: bannana 这个Lua表中有一个函数叫做chew,它接受一个参数 bannana.chew(5) 我还使用了,例如一个classCPerson: class CPerson { public: // .... void Eat(); // .... }; 我可以从Lua获取此对象的实例: person = engine:getPerson() 我需要能够执行以下Lua代码: person = engin

例如,我有一个表/对象:

bannana
这个Lua表中有一个函数叫做
chew
,它接受一个参数

bannana.chew(5)
我还使用了,例如一个class
CPerson

class CPerson {
    public:
        // ....
        void Eat();
        // ....
};
我可以从Lua获取此对象的实例:

person = engine:getPerson()
我需要能够执行以下Lua代码:

person = engine:getPerson()
person:Eat(bannana)
其中
person:eat
将调用
bannana
表中的
chew
函数,并传递一个参数

由于C++中实现了代码> CMANS/CODE,需要实现什么更改<代码> EATE()/CUT>?假设cNave/Cuffel>类已经有Lua状态指针?< /P> <> > > Edt1: 我不想知道如何将C++类绑定到Lua,我已经有了Sigg来为我做这个,我想知道如何从Lua表中调用Lua函数,从C++。


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);

这对我来说并没有帮助,这一切告诉我如何传递文字,如何绑定C++到LUA与LUNA,以及如何通过Lua传递C++对象。我所要的是如何在C++中从LUA表调用方法,我已经有了Sigg将C++绑定到Lua,对于我来说,CWAN的EAT方法(由SWIG生成的,我想是什么)的确切签名是什么?根据我的理解,你想要的是CPerson类得到“bannana”lua表,对吗?因此,我认为您需要在相应的luaState上获得一个处理程序……例如,回答问题的人可以根据需要随意干预CPerson::Eat的定义,可以安全地假设luaState已经事先传递给CPerson对象,并且只有一个这样的luaState存在。