4

他のObjective-Cクラスでは、以下のc++クラスのコードを呼び出しています。fSoundオブジェクトがFMOD::Sound以外のものであり、解放されるとクラッシュする場合があります。リリースする前に、fSoundオブジェクトが適切なタイプであることを確認するにはどうすればよいですか?

-(void) unloadSound:(FMOD::Sound *)fSound {

    FMOD_RESULT   result        = FMOD_OK;
    FMOD::Sound* soundEffect = static_cast<FMOD::Sound*>(fSound);

      if (soundEffect) {
          soundEffect->release();
      }

    soundEffect = NULL;
    fSound = NULL;
}    
4

1 に答える 1

2

static_cast の代わりに dynamic_cast を使用できます (キャストが失敗した場合、dynamic_cast は NULL を返します)。

ただし、設計を確認する必要があります。実行時に型をチェックすると、継承などで解決すべき設計上の問題が明らかになります。

于 2012-06-05T17:31:38.833 に答える