1

この行を書くと、アプリケーションがクラッシュします

world ->setContactListener (contactListener)

エラーメッセージは

void b2World::SetContactListener(b2ContactListener* listener)
{
    m_contactManager.m_contactListener = listener;    //EXE_BAD_ACCESS
}

衝突検出にcontactlistenerを使用したいのですが、助けてください...ありがとう

4

3 に答える 3

1

プログラムがその行で失敗している場合、m_contactManager が設定されていない可能性があります。

于 2012-07-09T13:07:52.933 に答える
0

このコードを使用

_contactListener = new MyContactListener();
world->SetContactListener(_contactListener);

このコードを書くには、単語が作成された後です。

クラッシュの理由: World は作成されていませんが、ContactListener を world に設定したため、アプリがクラッシュしました。これはあなたにとって役立つと思います...

于 2014-01-21T04:52:08.933 に答える
0

初期化を覚えましたcontactListenerか?への呼び出しで初期化されていないポインタを使用しようとするとsetContactListener、BAD_ACCESS が返されます。電話をかける前に、次のような行があることを確認してください。

ContactListener *contactListener = new ContactListener();
于 2012-07-10T20:43:54.827 に答える