-2
我初始化PhysWorld類的實例改變這裏:的Visual C++成員變量意外和無法解釋
此時成員變量如下:
這對我來說似乎是正確的。
,這一行執行:
我們踏進:
而在這一點上,成員變量的樣子:
有人可以幫我理解這裏發生了什麼嗎?這是我在C++中的第一次嘗試之一,所以我猜這是我的愚蠢。
謝謝!在分配
我初始化PhysWorld類的實例改變這裏:的Visual C++成員變量意外和無法解釋
此時成員變量如下:
這對我來說似乎是正確的。
,這一行執行:
我們踏進:
而在這一點上,成員變量的樣子:
有人可以幫我理解這裏發生了什麼嗎?這是我在C++中的第一次嘗試之一,所以我猜這是我的愚蠢。
謝謝!在分配
你可能鬆動的變量值:
pw = PhysWorld(...);
本聲明構造了一個臨時的對象,然後進行呼叫:pw.operator=(const PhysWorld&);
。檢查你如何實現它(如果你這樣做)。
此外,您的函數setRectDef
包含一個嚴重的錯誤:您正在存儲一個指向堆棧變量的指針,該指針在離開函數作用域後無效,稍後訪問它很可能會破壞堆棧。
編輯:如何處理tmpS
。
您需要在堆中分配的結構:
b2PolygoinShapre *tmpS = new b2PolygoinShape;
tmpS->SetAsTextBox(...);
this->rect = tmpS;
確定這就是爲什麼我不想使用C++,你是什麼意思存儲一個指向堆棧變量?我認爲&tmpS意味着指向tmpS的指針,但我將它分配給應該是指針的成員變量。爲什麼稍後訪問它會毀掉我的堆棧?我很抱歉,但我有很少的經驗與c + + – Mason 2013-04-21 02:16:14
@Mason'tmpS'分配在堆棧上。你正在將指針存儲到'this-> rect'中。離開函數作用域後,'tmpS'對象將被銷燬。所以你只剩下一個指向堆棧中某個區域的指針,它可以被你的程序使用......並且嘗試使用作爲指向'b2PolygoinShape'類型的指針會導致許多有趣的結果。 – 2013-04-21 02:18:58
好的,您能否讓我知道正確的方法是什麼樣子?我現在明白,tmpS不再存在,但我不確定如何讓它堅持下去。 – Mason 2013-04-21 02:21:51