tengo por ejemplo, un Lua tabla/objeto:las funciones de llamada en una tabla Lua de C++
bannana
Y esta tabla Lua tiene una función dentro de él denomina chew
, que toma un parámetro
bannana.chew(5)
también he utilizado SWIG, y tienen por ejemplo una clase CPerson
:
class CPerson {
public:
// ....
void Eat();
// ....
};
puedo obtener una instancia de este objeto de Lua:
person = engine:getPerson()
Lo que necesito para ser capaz de hacer es el siguiente código Lua:
person = engine:getPerson()
person:Eat(bannana)
Dónde person:eat
llamarían la función chew
en el bannana
tabla, pasando un parámetro.
Dado que CPerson
se implementa en C++, ¿qué cambios se necesitan para implementar Eat()
suponiendo que la clase CPerson
ya tiene un puntero de estado Lua?
Edit1: no quiero saber cómo enlazar clases de C++ a Lua, ya tengo TRAGO a hacer esto por mí, quiero saber cómo llamar a funciones Lua dentro tablas Lua, de C++.
Edit2: El CPerson
clase y bannana
mesa, son ejemplos generales, se puede suponer que la clase CPerson
ya tiene un LuaState puntero/de referencia, y que la firma de la función del método de Eat
se puede cambiar por el persona respondiendo
ésto no me ayude, todo esto me dice es cómo pasar literales, cómo enlazar C++ para LUA con luna, y cómo pasar objetos C++ alrededor con lua . –
Lo que pregunté, es cómo llamar a un método en una tabla lua de C++, ya tengo SWIG para vincular C++ a lua para mí –
¿cuál es la firma exacta del método Eat de CPerson (generado por SWIG, supongo?) Por lo que entiendo, lo que quieres es la clase CPerson para obtener la tabla de lua 'bannana', ¿verdad? Creo que para eso necesita obtener un controlador en el luaState correspondiente ... – phtrivier