我将Lua嵌入到C ++类中。
似乎tolua ++忽略了我班级的一些重载操作符。
tolua ++发出以下警告:
有什么方法吗?
答案 0 :(得分:4)
我不熟悉tolua ++,但它不支持其中任何一种都是有意义的。 tolua ++只是礼貌地通知你,所以你不认为代码有任何影响。
赋值运算符在Lua和the ~=
operator is the negation of ==
的上下文中没有意义,因此实现operator==
会为您的Lua对象处理==
和~=
。< / p>
编辑:使用此空间回答下面提出的问题,以便我可以包含代码:
是的,这解释了不平等关系,但是如何分配呢?
在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
)