如何将 Lua 用户数据转换为 C++ class 对象?
How to convert Lua userdata to C++ class object?
我有这个 Lua 代码:
function returnPerson()
local person = Person("Mike", 23)
return person
end
它 returns 表示 Person 的用户数据(C++ class 使用 LuaBridge 注册)。所以我使用 lua_pcall 调用此函数,现在 lua 堆栈的最后一个元素是该用户数据。我的问题是如何在 C++ 中将这个位于 -1 的用户数据转换(转换)回 Person。
我试过了,但它只是终止了程序:
LuaRef lref_p(l);
lref_p.fromStack(l, -1);
Person pers = lref_p.cast<Person>();
我希望它有意义:)
好的,经过数小时的调整和尝试,我找到了解决方案。这是第二行: lref_p.fromStack(l, -1);
这就是问题所在。应该是lref_p = LuaRef::fromStack(l, -1);
我还找到了一种更简单、更简洁的方法:
Person *pers = luabridge::Userdata::get<Person>(l, 1, false);
我有这个 Lua 代码:
function returnPerson()
local person = Person("Mike", 23)
return person
end
它 returns 表示 Person 的用户数据(C++ class 使用 LuaBridge 注册)。所以我使用 lua_pcall 调用此函数,现在 lua 堆栈的最后一个元素是该用户数据。我的问题是如何在 C++ 中将这个位于 -1 的用户数据转换(转换)回 Person。
我试过了,但它只是终止了程序:
LuaRef lref_p(l);
lref_p.fromStack(l, -1);
Person pers = lref_p.cast<Person>();
我希望它有意义:)
好的,经过数小时的调整和尝试,我找到了解决方案。这是第二行: lref_p.fromStack(l, -1);
这就是问题所在。应该是lref_p = LuaRef::fromStack(l, -1);
我还找到了一种更简单、更简洁的方法:
Person *pers = luabridge::Userdata::get<Person>(l, 1, false);