Получение ошибки lua, когда я дважды вызываю связанную функцию класса c ++? - PullRequest
0 голосов
/ 04 февраля 2012

Я нашел этот пост в блоге о том, как связать классы 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 голосов
/ 22 июня 2013

Похоже, вы неправильно управляете своим стеком.

Вы делаете lua_settop (0); или подобное в вашей функции SetPosition? Если вы правильно управляете своим стеком, эта ошибка исчезнет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...