0

LuaPlus を使用する Game Coding Complete 4th Edition の例に従っています。

この例と、私が自分で試したコードでは、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&)'
4

0 に答える 0