如何将Lua中的userdata转换为C++的类对象?

我有这段 Lua 代码:

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

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

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

LuaRef lref_p(l);

lref_p.fromStack(l, -1);

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

我希望它有意义 :)

点赞
用户3071028
用户3071028

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

此外,我发现有一种更简单、更清晰的方法可以实现这个:

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

2015-08-28 12:59:06