Visual C ++成员变量意外地和无法解释地更改

时间:2013-04-21 01:58:22

标签: c++ visual-studio-2010 pointers

我正在初始化一个PhysWorld类的实例,如下所示:

enter image description here

此时成员变量如下:

enter image description here

这对我来说似乎是正确的。

然后这一行执行:

enter image description here

我们进入:

enter image description here

此时,成员变量如下所示:

enter image description here

有人可以帮我理解这里发生了什么吗?这是我在c ++中的第一次尝试之一,所以我猜这是我的愚蠢。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可能会在分配时松散变量值:

pw = PhysWorld(...);

此语句构造一个临时对象,然后进行调用:pw.operator=(const PhysWorld&);。检查你如何实现它(如果你这样做)。

你的函数setRectDef也包含一个严重的错误:你正在存储一个指向堆栈变量的指针,它在离开函数作用域后会无效,以后访问它很可能会毁掉你的堆栈。

编辑:如何处理tmpS

您需要在堆上分配您的结构:

b2PolygoinShapre *tmpS = new b2PolygoinShape;
tmpS->SetAsTextBox(...);
this->rect = tmpS;