gpt4 book ai didi

c++ - tolua++ 忽略赋值和不等运算符?

转载 作者:行者123 更新时间:2023-11-30 02:10:30 24 4
gpt4 key购买 nike

我正在将 Lua 嵌入到 C++ 类中。

似乎 tolua++ 忽略了我类(class)的一些重载运算符。

tolua++ 发出以下警告:

  • **tolua++ 警告:不支持 operator=,忽略
  • **tolua++ 警告:不支持运算符!=,忽略

有什么办法解决这个问题吗?

最佳答案

我不熟悉 tolua++,但它不支持其中任何一个是有道理的。 tolua++ 只是礼貌地通知您,所以您认为该代码没有任何效果。

赋值运算符在 Lua 上下文中没有意义,并且 the ~= operator is the negation of == ,因此实现 operator== 会为您的 Lua 对象处理 ==~=

编辑:使用这个空间来回答下面提出的问题,这样我就可以包含代码:

True, that explains the inequality relation, but what about assignment?

在 Lua 中,变量没有类型,它们只是值的名称。赋值运算符将任何类型的新值与该名称相关联,它不会修改与该名称相关联的先前值(例如,该值存在于内存中的某处,未更改,如果没有进一步引用它则等待垃圾回收存在)。想想赋值对全局变量意味着什么:

print(math) --> table: 00516620
math = "foo"
print(math) --> foo

第二行相当于:

_G.math = "foo"

换句话说,math=val 正在替换 _G["math"] 处的值,所以它是否意味着覆盖 operator= > 对于数学对象?什么都没有。

最接近于修改赋值运算符的是 __newindex 元方法,它仅适用于表/用户数据,因此对本地没有影响。在我们的 math="foo" 示例中,__newindex 将在 _G 而不是 math 上,并且在这种情况下甚至不会被调用,因为 _G.math 有一个现有值(__newindex 在您尝试将值分配给不存在的键时被调用)

关于c++ - tolua++ 忽略赋值和不等运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4517971/

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