超能力回调识别

Callback identification in superpowered

我正在尝试扩展一段在 iOS 应用程序中使用 SuperPowered 音频库的代码。特别是,我对 void playerEventCallback(void *clientData, SuperpoweredAdvancedAudioPlayerEvent event, void *value) 回调很感兴趣,它会在创建音频播放器时传递一个指向管理 SuperPowered 对象的指针:

SuperpoweredAdvancedAudioPlayer(void *clientData, SuperpoweredAdvancedAudioPlayerCallback callback, unsigned int sampleRate, unsigned char cachedPointCount, unsigned int internalBufferSizeSeconds = 2, unsigned int negativeSeconds = 0);

如果我对代码的理解正确,没有什么能阻止我为了自己的目的修改这种情况,例如,传递一个指向数组中对象的指针,该对象将标识 is/was 运行,而不是管理 SuperPowered 对象。

我可以这样做吗,或者我应该知道有什么后果吗?

我最终就是这样做的,传递了一个定义如下的结构实例:

struct AudioPlayerWithIndex {

    int index;
    SuperpoweredAdvancedAudioPlayer* player;
    Superpowered* superpoweredInstance;

    AudioPlayerWithIndex(int index, SuperpoweredAdvancedAudioPlayer* player, Superpowered* superpoweredInstance) : index(index), player(player), superpoweredInstance(superpoweredInstance) {}
};