[英]tolua++ ignores assignment and inequality operator?
我在一个C ++类中嵌入了Lua。
似乎tolua ++忽略了我班级的一些重载运算符。
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.