C++ 如何将Lua用户数据转换为C++;类对象?
我有这个Lua代码:C++ 如何将Lua用户数据转换为C++;类对象?,c++,lua,luabridge,C++,Lua,Luabridge,我有这个Lua代码: function returnPerson() local person = Person("Mike", 23) return person end 它返回表示Person的userdata(使用LuaBridge注册的C++类)。所以我使用lua_pcall调用这个函数,现在lua堆栈的最后一个元素是userdata。我的问题是我如何将这个用户数据转换为(1),返回到C++中的人。 我尝试了这个,但它只是终止了程序: LuaRef lref_
function returnPerson()
local person = Person("Mike", 23)
return person
end
它返回表示Person的userdata(使用LuaBridge注册的C++类)。所以我使用lua_pcall调用这个函数,现在lua堆栈的最后一个元素是userdata。我的问题是我如何将这个用户数据转换为(1),返回到C++中的人。
我尝试了这个,但它只是终止了程序:
LuaRef lref_p(l);
lref_p.fromStack(l, -1);
Person pers = lref_p.cast<Person>();
LuaRef lref_p(l);
lref_p.fromStack(l,-1);
人员人数=lref_p.cast();
我希望它有意义:)好的,经过几个小时的调整和尝试,我找到了解决方案。这是第二行:
lref\u p.fromStack(l,-1)代码>这就是问题所在。它应该是lref\u p=LuaRef::fromStack(l,-1)代码>
我还发现了一种更简单、更干净的方法:
Person*pers=luabridge::Userdata::get(l,1,false)代码>尝试人物角色=*lref_p.cast()代码>不,仍然不工作@rpattiso和它如何终止的描述(带有什么错误消息)将非常好。@rpattiso经过数小时的调整和尝试,我找到了解决方案lref\u p.fromStack(l,-1)
应该替换为lref\u p=LuaRef::fromStack(l,-1)
而且我发现了一种更简单的方法:Person*pers=luabridge::Userdata::get(l,1,false)代码>太好了,看起来也更干净了。您可以将您的解决方案作为答案发布。