首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >tolua++忽略赋值和不等式运算符?

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

Stack Overflow用户
提问于 2010-12-23 10:40:46
回答 1查看 357关注 0票数 1

我将Lua嵌入到一个C++类中。

tolua++似乎忽略了类中的一些重载运算符。

tolua++发出以下警告:

ignoring

  • **tolua++警告:不支持operator=,警告:不支持操作员!=,忽略

有办法绕过这件事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-23 11:31:05

我对tolua++并不熟悉,但它不支持任何一个都是有道理的。tolua++只是礼貌地通知您,这样您就不会认为代码有任何效果。

在Lua和the ~= operator is the negation of ==的上下文中,赋值操作符是没有意义的,因此实现operator==需要处理Lua对象的==~=

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

真,这解释了不等式关系,但是赋值呢?

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

代码语言:javascript
复制
print(math) --> table: 00516620
math = "foo"
print(math) --> foo

这第二行相当于:

代码语言:javascript
复制
_G.math = "foo"

换句话说,math=val正在替换_G["math"]上的值,因此它是否意味着重写数学对象的operator=?没什么。

最接近修改赋值操作符的是__newindex元方法,它只适用于表/用户数据,因此对局部变量没有任何影响。在我们的math="foo"示例中,__newindex将位于_G而不是math上,并且在本例中甚至不会被调用,因为_G.math有一个存在的值(当您试图将一个值分配给一个不存在的键时,会调用__newindex)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4517971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档