Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将Lua用户数据转换为C++;类对象?_C++_Lua_Luabridge - Fatal编程技术网

C++ 如何将Lua用户数据转换为C++;类对象?

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_

我有这个Lua代码:

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)太好了,看起来也更干净了。您可以将您的解决方案作为答案发布。