gpt4 book ai didi

c++ - 使用 Luabind 实例化 lua 类

转载 作者:行者123 更新时间:2023-11-28 06:49:37 25 4
gpt4 key购买 nike

是否可以在 C++ 应用程序中使用 Luabind 实例化 Lua“类”?为了说明这个问题,请考虑以下简单的 Lua 脚本:

class "Person"

function Person:__init(name)
self.name = name
end

function Person:display()
print(self.name)
end

我可以在同一个 Lua 脚本中实例化这个类,一切正常。但是,我想在我的 C++ 应用程序中使用 Luabind 从此类实例化一个新对象。我尝试了以下方法:

luabind::object myObject = luabind::globals(L)["Person"]("John Doe");
myObject["display"]();

我希望看到“John Doe”输出到控制台。相反,我收到了 Lua 运行时错误。创建新对象的调用似乎有效。问题似乎是显示函数中的 self 为 nil。

最佳答案

selfnil 因为如果您在 lua 中使用“:”运算符,lua 将自动提供调用者作为第一个参数。所以:

somePerson:display() == somePerson.display(somePerson)

因此你也需要提供 self 论证:

luabind::object myObject = luabind::globals(L)["Person"]("John Doe");
myObject["display"](myObject);

或者甚至更好:使用 luabind 中的简单函数可用于该目的

luabind::object myObject = luabind::globals(L)["Person"]("John Doe");
luabind::call_member<void>(myObject, "display");

关于c++ - 使用 Luabind 实例化 lua 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24226507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com