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)
我还使用了,例如一个classCPerson
:
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>?假设
Edit2:CPerson类和
表都是一般示例,可以假设bannana
类已经有一个LuaState指针/引用,CPerson
方法的函数签名可以由应答者更改。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存在。