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

您可以使用 dynamic_cast 而不是 static_cast(如果强制转换不成功,dynamic_cast 返回 NULL)。

但是,您应该检查您的设计。在运行时检查类型揭示了应该通过继承解决的设计问题。

于 2012-06-05T17:31:38.833 回答