У меня есть этот код Lua:
function returnPerson()
local person = Person("Mike", 23)
return person
end
Он возвращает пользовательские данные, представляющие Person (класс C++, зарегистрированный с использованием LuaBridge). Итак, я вызываю эту функцию, используя lua_pcall, и теперь последним элементом стека lua являются пользовательские данные. Мой вопрос заключается в том, как мне преобразовать (преобразовать) эти пользовательские данные в -1 обратно в Person в C++.
Я пробовал это, но это просто завершает программу:
LuaRef lref_p(l);
lref_p.fromStack(l, -1);
Person pers = lref_p.cast<Person>();
Я надеюсь, что это имеет смысл :)
Person pers = *lref_p.cast<Person *>();
- person ryanpattison   schedule 27.08.2015lref_p.fromStack(l, -1);
следует заменить наlref_p = LuaRef::fromStack(l, -1)
Также я нашел более простой способ сделать это:Person *pers = luabridge::Userdata::get<Person>(l, 1, false);
- person user3071028   schedule 28.08.2015get<Person>(l, 1, false)
мне пришлось использовать 1 вместо -1, поскольку этот параметр должен быть индексом в стеке. Функция имеетassert(index > 0)
Я понятия не имею, почему. - person user3071028   schedule 28.08.2015