繁体   English   中英

tolua ++忽略了赋值和不等式运算符?

[英]tolua++ ignores assignment and inequality operator?

我在一个C ++类中嵌入了Lua。

似乎tolua ++忽略了我班级的一些重载运算符。

tolua ++发出以下警告:

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

有没有办法解决?

我不熟悉tolua ++,但它不支持其中任何一个都是有意义的。 tolua ++只是礼貌地通知你,所以你不认为代码有任何影响。

赋值运算符在Lua的上下文中没有意义,而~=运算符是==的否定 ,因此实现operator==为您的Lua对象处理==~=

编辑:使用此空间回答下面提出的问题,以便我可以包含代码:

是的,这解释了不平等关系,但是如何分配呢?

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

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

第二行相当于:

_G.math = "foo"

换句话说, math=val正在替换_G["math"] ,那么它是否意味着为数学对象覆盖operator= 没有。

你可以修改赋值运算符的最接近的是__newindex元方法,它只适用于表/ userdata,因此对本地化没有影响。 在我们的情况下, math="foo"例子中, __newindex将是对_G不是math ,甚至不会在这种情况下被调用,因为_G.math有一个现有的值( __newindex被调用时,你尝试分配一个值到一个不存在的密钥)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM