问题描述
我在程序class中定义了两个公有变量.mat1asmatrix,mat2asmatrix然后在窗体load中对mat1进行了初始化。在按钮单击事件中令mat2=mat1在这里问题出来了。如果mat2进行scale,平移,mat1和mat2一直相等。联动了。如果mat2=mat1.clone,这两个矩阵就独立了。请教大神,这是怎么回事啊?是只有matrix有这个问题,还是其他类型也这样呢。
解决方案
解决方案二:
微软应该改进相等符号的定义,应该分别定义<==>按地址引用类型,<=>赋值类型。相等类型必须用其他符号来定义,只有这样才能避免错误使用导致的BUG。改进需要大家主动联系微软反映问题。mat2=mat1'这时候相等符号转化为按地址引用,不正确认识这个相等符号问题,程序开发中产生很多BUG.mat2=mat1.clone‘这时候不能直接引用,通过调用Clone函数才能进行传递,所以,两个互相被断开了。
解决方案三:
那如果定义了两个pointf类型:p1,p2p1=newpointf(100,100)p2=p1如果p2.x=200,p2.y=200此时p1不会变。说明只是有些类型才会地址引用,如matrixpointf不是怎么区分呢?
时间: 2024-10-30 13:20:35