【发布时间】:2015-11-21 22:25:02
【问题描述】:
我有这个 Lua 代码:
function returnPerson()
local person = Person("Mike", 23)
return person
end
它返回代表人的用户数据(使用 LuaBridge 注册的 C++ 类)。所以我使用 lua_pcall 调用这个函数,现在 lua 堆栈的最后一个元素是 userdata。我的问题是如何将 -1 的用户数据转换(转换)回 C++ 中的 Person。
我试过了,但它只是终止了程序:
LuaRef lref_p(l);
lref_p.fromStack(l, -1);
Person pers = lref_p.cast<Person>();
我希望这是有道理的:)
【问题讨论】:
-
试试
Person pers = *lref_p.cast<Person *>(); -
不行,还是不行! @rpattiso
-
一个MCVE 和它如何终止的描述(带有什么错误消息)会很棒。
-
@rpattiso 经过数小时的调整和尝试,我发现解决方案
lref_p.fromStack(l, -1);应该替换为lref_p = LuaRef::fromStack(l, -1)我还找到了一种更简单的方法:Person *pers = luabridge::Userdata::get<Person>(l, 1, false); -
太好了,看起来也更干净了。您可以发布您的解决方案作为答案。