3

我有这个 Lua 代码:

function returnPerson()
    local person = Person("Mike", 23)     
    return person
end

它返回代表 Person(使用 LuaBridge 注册的 C++ 类)的用户数据。所以我使用 lua_pcall 调用这个函数,现在 lua 堆栈的最后一个元素是 userdata。我的问题是如何将 -1 的用户数据转换(转换)回 C++ 中的 Person。

我试过这个,但它只是终止程序:

LuaRef lref_p(l);

lref_p.fromStack(l, -1);

Person pers = lref_p.cast<Person>();

我希望这是有道理的:)

4

1 回答 1

2

好的,经过数小时的调整和尝试,我找到了解决方案。这是第二行:lref_p.fromStack(l, -1);这就是问题所在。它应该是lref_p = LuaRef::fromStack(l, -1);

我还发现了一种更简单、更清洁的方法:

Person *pers = luabridge::Userdata::get<Person>(l, 1, false);

于 2015-08-28T12:59:06.853 回答