-2

次のような「this」ポインターを他のオブジェクトに渡すオブジェクトがある奇妙なシナリオがあります。

void GameLayer::startGame()
{

    m_pGameController = new GameController(this);

}

GameController コンストラクターで、GameLayer でメンバーを設定します

GameController::GameController(GameLayer* gamelayer)
{
   m_gamelayer = gamelayer;
}

GameController には、次のようなコールバック関数を使用する関数があります。

GameController::methodA()
{
    CurrentGem->runAction(GameController::mycallbackMethod);
}

コールバック関数では、次のように「this」を使用して GameController 関数とメンバーにアクセスします。

GameController::mycallbackMethod()
{

int test = this->age();
std::string name = this->name();

}

しかし、問題は、m_pGameController にアクセスしようとすると、NULL ポインターを示す例外が発生することです。

GameController::mycallbackMethod()
{

this->m_gamelayer->someGamelayerMethod();

}

エラーは次のとおりです。

Access violation reading location 0xFFFFFFFF.

私は何を間違っていますか?

4

2 に答える 2

0

コールバック関数を渡すときは、次のように呼び出します

CurrentGem->runAction(&GameController::mycallbackMethod);

mycallbackMethod があるべき場所static

于 2013-09-01T10:36:46.230 に答える