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

时间:2015-08-27 13:42:31

标签: c++ lua luabridge

我有这个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>();

我希望它有道理:)

1 个答案:

答案 0 :(得分:2)

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

此外,我发现了一种更简单,更清洁的方法:

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