我正在初始化一个 PhysWorld 类的实例,如下所示:
此时成员变量如下:
这对我来说似乎是正确的。
然后这一行执行:
我们走进:
此时,成员变量如下所示:
有人可以帮我理解这里发生了什么吗?这是我在 C++ 中的第一次尝试,所以我猜这对我来说是愚蠢的。
谢谢!
我正在初始化一个 PhysWorld 类的实例,如下所示:
此时成员变量如下:
这对我来说似乎是正确的。
然后这一行执行:
我们走进:
此时,成员变量如下所示:
有人可以帮我理解这里发生了什么吗?这是我在 C++ 中的第一次尝试,所以我猜这对我来说是愚蠢的。
谢谢!
您可能会在分配时丢失变量值:
pw = PhysWorld(...);
该语句构造一个临时对象,然后调用:pw.operator=(const PhysWorld&);
。检查你是如何实现它的(如果你这样做了)。
此外,您的函数setRectDef
包含一个严重的错误:您正在存储指向堆栈变量的指针,该指针在离开函数范围后将无效,并且稍后访问它很可能会破坏您的堆栈。
编辑:如何处理tmpS
。
您需要在堆上分配结构:
b2PolygoinShapre *tmpS = new b2PolygoinShape;
tmpS->SetAsTextBox(...);
this->rect = tmpS;