我在数组成员内部有一个类。我有一个get方法和一个数组的set方法。
问题是我调用set(更新)方法来更改数组中的变量,我看到调试器变量确实实际更新。然后当我立即调用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];
}
答案 0 :(得分:0)
这个问题真的很荒谬,我不想让这个帖子含糊不清。这是一个非常初学的错误,而且一切都是关于缺失的«&amp; »这导致我更新副本。 实际上我上面简化了写下一个代码:
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;
}
有人可以说我有多个级别的吸气剂让我蒙羞。 谢谢。