C++ je par exemple, une table Lua/objet:Appel de fonctions dans une table Lua de
bannana
Et cette table Lua a une fonction à l'intérieur appelé chew
, qui prend un paramètre
bannana.chew(5)
J'ai aussi utilisé SWIG, et ont par exemple une classe CPerson
:
class CPerson {
public:
// ....
void Eat();
// ....
};
je peux obtenir une instance de cet objet de Lua:
person = engine:getPerson()
Ce que je dois être en mesure de faire est le code Lua suivant:
person = engine:getPerson()
person:Eat(bannana)
Où person:eat
appelleraient la fonction chew
dans la bannana
en passant un paramètre.
Depuis CPerson
est implémenté en C++, quels changements sont nécessaires pour mettre en œuvre Eat()
avec la classe CPerson
dispose déjà d'un pointeur d'état Lua?
Edit1: Je ne veux pas savoir comment lier des classes C++ à Lua, je l'ai déjà SWIG de le faire pour moi, je veux savoir comment appeler les fonctions Lua dans les tables Lua, de C++.
Edit2: La classe CPerson
et bannana
table, sont les deux exemples généraux, on peut supposer que la classe CPerson
a déjà un pointeur LuaState/référence, et que la signature de la fonction de la méthode Eat
peut être modifié par le personne répondant.
ceci ne me aide, tout cela me dit est comment passer littéraux, comment lier C++ pour Lua avec luna, et comment passer des objets C++ autour avec lua . –
Ce que j'ai demandé, c'est comment appeler une méthode sur une table lua de C++, j'ai déjà SWIG pour lier C++ à lua pour moi –
quelle est la signature exacte de la méthode Eater de CPerson (générée par SWIG, je suppose?) D'après ce que je sous-entends, ce que vous voulez, c'est que la classe CPerson obtienne la table 'bannana' lua, n'est-ce pas? Je pense que pour cela vous devez obtenir un gestionnaire sur le luaState correspondant ... – phtrivier