たとえば、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 が既にあります。Lua テーブル内で C++ から Lua 関数を呼び出す方法を知りたいです。
Edit2:CPerson
クラスとbannana
テーブルはどちらも一般的な例です。クラスにはすでに LuaState ポインター/参照があり、メソッドの関数シグネチャは回答者が変更できると想定できCPerson
ますEat
。