我正在关注使用 LuaPlus 的 Game Coding Complete 第 4 版中的示例。
在示例中,以及我自己尝试过的任何代码中,如果函数的返回值为 LuaObject,我将无法将其注册到 lua。
LuaObject myClass::CreateFromScript(void)
{
Player* pCppInstance = new Player();
LuaObject luaInstance;
luaInstance.AssignNewTable(pLuaState);
luaInstance.SetLightUserData("__object", pCppInstance);
LuaObject metaTable = pLuaState->GetGlobals().GetByName("Players");
luaInstance.SetMetaTable(metaTable);
return luaInstance;
}
和
globals.RegisterDirect("createPlayer", &myClass::CreateFromScript);
在.h
static LuaObject CreateFromScript(void);
当我将返回值设置为 LuaObject 时,总是会发生错误。这就是为什么当我尝试在我的代码中返回一个具有不同函数的 LuaObject 时,我之前无法做到这一点。
error: LuaPlusCD.h (line 158)
"no matching function for call to 'Push(lua_State*&, LuaPlus::LuaObject&)'