[英]Calling functions in a Lua table from C++
我有一個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
會調用bannana
表中的chew
函數,傳遞一個參數。
由於CPerson
是用C ++實現的,假設CPerson
類已經有一個Lua狀態指針,那么實現Eat()
需要做些什么改變?
Edit1:我不想知道如何將C ++類綁定到Lua,我已經有SWIG為我做這個,我想知道如何從C ++中調用Lua表中的Lua函數。
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);
也許“ Simpler Cpp Binding ”會很有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.