当我两次调用绑定的c ++类函数时出现lua错误?

时间:2012-02-04 17:06:45

标签: c++ c lua

我发现这篇博客文章介绍了如何将c ++类绑定到lua:http://loadcode.blogspot.com/2007/02/wrapping-c-classes-in-lua.html

但它不能直接开箱即用。 我已经将函数调整为我自己的而不是Sprite类我正在使用NPC类。 我将函数setSpeed更改为我自己调用的NpcSetPosition(lua_State *L),每当我在lua中调用以下内容时都会调用它:

local npc = Npc:New()
npc:SetPosition(5,5)

(npc:SetPosition函数)

现在有趣的是我如何调用checkSprite中的NpcSetPosition,如果我这样做,那么lua脚本将运行良好。但如果我这样做两次(我两次调用npc:SetPosition(5,5)),我会收到以下错误消息:

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

这意味着我无法设置两次npc的位置,这是废话。 你知道出了什么问题吗? 它与lua堆栈有关吗? 感谢。

1 个答案:

答案 0 :(得分:0)

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

你在做lua_settop(0);或类似的SetPosition函数? 如果您正确管理堆栈,则此错误将消失。