c++中的变量变更

variables alteration in c++

本文关键字:变量 c++      更新时间:2023-10-16

我遇到了一个荒谬的问题。

我在数组成员内部有一个类。我有一个get方法和一个set方法。

问题是,我调用set(to update)方法来更改数组中的变量,并且我通过调试器看到这些变量实际上是更新的。然后,当我在set方法之后立即调用get方法时,我发现数组的变量已经改回了原来的值
这是大致的代码:

object.updatFunction();//sort of set method
//nothing in between
Type variable=object.getFunction();

添加代码:

void Cube::updtCornersNextToCentr()
{
int iHalfSide=m_SideSize/2;
int centerX(m_Center.x()),centerY(m_Center.y()),centerZ(m_Center.z());
m_CubeCornerVertices[0].setX(centerX-iHalfSide);
m_CubeCornerVertices[0].setY(centerY+iHalfSide);
m_CubeCornerVertices[0].setZ(centerZ-iHalfSide);
m_CubeCornerVertices[1].setX(centerX+iHalfSide);
m_CubeCornerVertices[1].setY(centerY+iHalfSide);
m_CubeCornerVertices[1].setZ(centerZ-iHalfSide);
//.......   
m_CubeCornerVertices[7].setX(centerX+iHalfSide);
m_CubeCornerVertices[7].setY(centerY-iHalfSide);
m_CubeCornerVertices[7].setZ(centerZ+iHalfSide);
}
QVector3D * Cube::getCubeCornerVertices()const
{
static QVector3D  temp[8];
for(int i=0;i<8;i++)
{
    temp[i]=m_CubeCornerVertices[i];
}
return &temp[0];
}

这个问题真的很荒谬,我不想让这篇文章模棱两可。这是一个非常初学者的错误,都是关于一个缺失的«&»导致我更新了一份副本。事实上,我在上面简化了写下一个代码:

object.updatFunction();//sort of set method
//nothing in between
Type variable=object.getFunction();

更真实的代码是这样的:

m_WorldSpace->getCube().updtCornersNextToCentr()
//nothing in between
const QVector3D corners[8]=m_WorldSpace->getCube().getCubeCornerVertices();

所有的问题都出现在getCube()函数中,它不是这样的:

Cube& WorldSpace::getCube()//here is the missing "&"
{
return m_Cube;
}

我写了这个

Cube WorldSpace::getCube()//this caused to get and update just a temporary copy
{
return m_Cube;
}

有人可以说我有多个级别的getter,这让我失明。非常感谢。