首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ LuaBridge试图索引用户数据值(本地“self”)

C++ LuaBridge试图索引用户数据值(本地“self”)
EN

Stack Overflow用户
提问于 2017-04-25 00:53:39
回答 1查看 1K关注 0票数 0

我已经在我的框架中创建了一个围绕LuaBridge的包装器,这样我就可以轻松地将LuaBridge替换为另一个库。我有一些类可以在LuaBridge中注册,作为框架初始化的一部分。然后,我可以在Lua中轻松地访问或实例化这些类。当我想调用已在框架init中注册的类/表上的自定义方法时,就会出现这个问题,我已经在Lua中定义了这个方法。

代码语言:javascript
复制
function MyObject:OnUpdate()
  self:Init()
end

如果我试图通过传递一个OnUpdate实例来调用MyObject,以便能够利用self,则会得到以下错误:

“尝试索引用户数据值(本地'self')”

如果我手动注册MyObject,而不是允许我的框架在启动时初始化它,它就会完美地工作。这就像Lua可以解析MyObject的元级,尽管我可以清楚地看到它的定义。我似乎也无法从Lua那里找到多少准确的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-02 15:48:04

我解决了我的问题。我前面提到的得到注册的类在另一个库(DLL)中。我正在为每个类生成键,并将这些键存储在Lua注册表中。密钥生成使用静态模板化方法,该方法返回每个类型的静态字符的地址。当调用代码从DLL返回并进入我的EXE时,我将注册一个从DLL预先注册的类中继承的新类。当我查找基类的键时,它是不同的,因为执行最初在DLL的上下文中运行,现在在我的EXE上下文中运行。我假设这是在C++中使用模板以及代码正在执行的结果。在使用C++超过15年之后,我学到了一些新的东西。希望这能帮到别人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43599839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档