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

标签 c++ lua luabridge

我有这个 Lua 代码:

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

它返回表示 Person 的用户数据(使用 LuaBridge 注册的 C++ 类)。所以我使用 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);

关于c++ - 如何将 Lua 用户数据转换为 C++ 类对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32251038/

相关文章:

luarocks lyaml 安装错误

r - “Enter”键不会与 splashR::splash_send_key 一起发送

Lua获取一年中的某一天

c++ - Luabridge:删除时堆损坏(_CrtIsValidHeapPointer)

c++ - 用灵气解析C风格的关系运算符

c++ - 是否有任何工具可以显示函数内的数据依赖性

c++ - 类中的 luabridge 类对象

c++ - 如何对使用Luabridge返回std:vectors的类方法使用.addFunction

c++ - boost::asio io_service::run_one 导致段错误

c++ - 如何编写一个可控的随机数生成器?