当我调用绑定的C++类函数两次时发生lua错误?
问题描述:
我发现这个博客张贴有关如何C++类绑定到LUA:http://loadcode.blogspot.com/2007/02/wrapping-c-classes-in-lua.html当我调用绑定的C++类函数两次时发生lua错误?
但它不是直的工作开箱。 我调整了我自己的函数,而不是我使用NPC类的Sprite类。 我改变了功能setSpeed
我自己叫NpcSetPosition(lua_State *L)
将被称为每次我打电话在Lua如下:
local npc = Npc:New()
npc:SetPosition(5,5)
(全国人大:SETPOSITION功能)
现在,有趣的是我如何调用checkSprite
在NpcSetPosition
之内,如果我这样做了一次,lua脚本将运行得很好。但是,如果我做两次(我称之为npc:SetPosition(5,5)
两次)我收到以下错误信息:
Lua Compile Error: script.lua:10: bad argument #1-1 to: 'SetPosition' (table expected, got userdata)
这意味着我不能为人大的位置两次这是废话。 你知道发生了什么问题吗? 它与lua堆栈有关吗? 谢谢。
答
听起来就像你错误地管理你的堆栈。
你在做lua_settop(0);或在你的SetPosition函数中类似? 如果你正确地管理你的堆栈,那么这个错误将会消失。
“我已经调整了我自己的功能”你能告诉我们调整后的版本吗? – 2012-02-04 17:09:25
它在这里:http://pastebin.com/3xMpCPG9 – user1188404 2012-02-04 17:19:54
我的意思是让你把它放在你的问题。 – 2012-02-04 17:40:14