-2

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

在此处输入图像描述

此时成员变量如下:

在此处输入图像描述

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

然后这一行执行:

在此处输入图像描述

我们走进:

在此处输入图像描述

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

在此处输入图像描述

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

谢谢!

4

1 回答 1

1

您可能会在分配时丢失变量值:

pw = PhysWorld(...);

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

此外,您的函数setRectDef包含一个严重的错误:您正在存储指向堆栈变量的指针,该指针在离开函数范围后将无效,并且稍后访问它很可能会破坏您的堆栈。

编辑:如何处理tmpS

您需要在堆上分配结构:

b2PolygoinShapre *tmpS = new b2PolygoinShape;
tmpS->SetAsTextBox(...);
this->rect = tmpS;
于 2013-04-21T02:12:13.097 回答