gpt4 book ai didi

binding - Lua 绑定(bind) : table vs userdata

转载 作者:行者123 更新时间:2023-12-01 23:19:56 31 4
gpt4 key购买 nike

为 C++ 类创建 Lua 绑定(bind)时,我应该返回表还是用户数据对象?

有人知道每种方法的优缺点吗?

最佳答案

我建议返回用户数据。无论采用何种方法,都必须有放置指针的地方到 C++ 数据,或实际的 C++ 数据本身,并且无处可去用 table 做这件事是安全的。

在某些情况下返回表是有意义的,因为它们可以在 Lua 中使用额外的属性进行“注释”,而无需执行任何操作任何额外的支持。不幸的是 C++ 对象指针必须去某个地方,而且没有明智的地方去其他地方而不是表格本身的实际条目。

对于它来说,这不是一个非常安全的地方。可以通过Lua找到代码,并删除或替换。这可能是偶然的,也可能是目的,这并不重要。

因此,我的偏好是返回用户数据对象。他们可以如果真的必须坚持的话,可以像 table 一样工作,但他们还有一个“ secret ”区域(实际用户数据本身),C++可以存储对象指针,避免被 Lua 代码覆盖。

(用户数据对象也有一个“环境”指针,这是另一个存储对象特定数据的地方。与用户数据负载一样本身,这个值是 Lua 代码无法访问的,也不会被破坏那样。)

关于binding - Lua 绑定(bind) : table vs userdata,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1434846/

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