当我调用一个绑定的 C++ 类函数两次时,会出现 Lua 错误?

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

但是它不能直接使用。我调整了该函数并使用NPC类而不是Sprite类。我将函数setSpeed更改为我的调用名称为NpcSetPosition(lua_State *L),每当我在lua中调用以下内容时都会调用它:

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

(npc:SetPosition函数)

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

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

这意味着我不能两次设置npc的位置,这很烦人。你知道出了什么问题吗?这与lua堆栈有关吗?谢谢。

原文链接 https://stackoverflow.com/questions/9142675

点赞
stackoverflow用户1300186
stackoverflow用户1300186

Sounds like you are incorrectly managing your stack.

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

Are you doing lua_settop( 0 ); or similar in your SetPosition function?

在你的 SetPosition 函数中是否使用了 lua_settop( 0 ); 或类似的语句?

If your managing your stack correctly then this error will disappear.

如果你正确地管理了你的堆栈,那么这个错误将会消失。

2013-06-22 12:10:21