当我调用绑定的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功能)

现在,有趣的是我如何调用checkSpriteNpcSetPosition之内,如果我这样做了一次,lua脚本将运行得很好。但是,如果我做两次(我称之为npc:SetPosition(5,5)两次)我收到以下错误信息:

Lua Compile Error: script.lua:10: bad argument #1-1 to: 'SetPosition' (table expected, got userdata) 

这意味着我不能为人大的位置两次这是废话。 你知道发生了什么问题吗? 它与lua堆栈有关吗? 谢谢。

+0

“我已经调整了我自己的功能”你能告诉我们调整后的版本吗? – 2012-02-04 17:09:25

+0

它在这里:http://pastebin.com/3xMpCPG9 – user1188404 2012-02-04 17:19:54

+2

我的意思是让你把它放在你的问题。 – 2012-02-04 17:40:14

听起来就像你错误地管理你的堆栈。

你在做lua_settop(0);或在你的SetPosition函数中类似? 如果你正确地管理你的堆栈,那么这个错误将会消失。