-2

ここに示すように、PhysWorld クラスのインスタンスを初期化しています。

ここに画像の説明を入力

この時点でのメンバー変数は次のとおりです。

ここに画像の説明を入力

これは私には正しいようです。

次に、次の行が実行されます。

ここに画像の説明を入力

次のステップに進みます。

ここに画像の説明を入力

この時点で、メンバー変数は次のようになります。

ここに画像の説明を入力

誰かがここで何が起こっているのかを理解するのを手伝ってもらえますか? これは C++ での私の最初の試みの 1 つであり、私の側では愚かなことだと推測しています。

ありがとう!

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 に答える