LUA-C++互動篇-lua向C++傳遞Table
阿新 • • 發佈:2021-02-09
LUA-C++互動篇-lua向C++傳遞Table
1.程式碼塊
所有涉及到的程式碼將會在本部中進行展示
1.1 LUA程式碼塊
在本段程式碼中,我們將一個tab傳遞給了c++
local tab = {x=1.41,y = 3.3,z = 4.12};
core.setPos(tab);
//這裡的core是我們開發的c++共享庫
1.2 C++程式碼塊
c++將會處理接收tab資料
typedef unordered_map<string, double > sdmap;
static void print(sdmap& map) {
sdmap::iterator it = map.begin();
while (it != map.end()) {
cout << setw(5) << it->first<<" "<<setw(10)<<it->second<<endl;
it++;
}
}
static sdmap checkTable(lua_State *L) {
lua_pushnil(L);
sdmap sdp;
while (lua_next(L, 1) != 0)
{
sdp.insert({ lua_tostring(L, -2) , lua_tonumber(L, -1) });
lua_pop(L, 1);
}
return sdp;
}
static int setPos(lua_State* L) {
sdmap tb = checkTable(L);
print(tb);
return 0;
}