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