gpt4 book ai didi

c++ - 从 Superpowered CrossExample for Android 解释 C++ 代码

转载 作者:行者123 更新时间:2023-11-30 03:35:37 24 4
gpt4 key购买 nike

此代码出现在 CrossExample 中来自 superpowered.com :

static void playerEventCallbackA(void *clientData, SuperpoweredAdvancedAudioPlayerEvent event, void * __unused value) {
if (event == SuperpoweredAdvancedAudioPlayerEvent_LoadSuccess) {

SuperpoweredAdvancedAudioPlayer *playerA = *((SuperpoweredAdvancedAudioPlayer **)clientData);

playerA->setBpm(126.0f);
playerA->setFirstBeatMs(353);
playerA->setPosition(playerA->firstBeatMs, false, false);
};
}

playerA = new SuperpoweredAdvancedAudioPlayer(&playerA , playerEventCallbackA, samplerate, 0);

playerA->open(path, fileAoffset, fileAlength);

谁能帮我理解 if 语句中的第一行?特别是,我如何解释作业的右侧?

*((SuperpoweredAdvancedAudioPlayer **)clientData)

最佳答案

clientData 作为 void pointer 传递。随后,它被转换为 SuperpoweredAdvancedAudioPlayer 类型的pointer to pointer。我 suposse clientData 在将它传递给函数之前是那种类型,这就是为什么需要强制转换的原因。我不知道为什么用这个 void* 而不是 SuperpoweredAdvancedAudioPlayer**。不好,但并不罕见。

名为 playerA 的变量是指向 SuperpoweredAdvancedAudioPlayer 类型对象的指针。取消对指向指针的指针的引用,您将获得指向 SuperpoweredAdvancedAudioPlayer 对象的指针,与 playerA 的类型相同。

请注意,playerA 仅在 if block 内声明,它的生命到此结束。 block 外还有另一个 playerA,必须在将其分配给任何东西之前声明。

关于c++ - 从 Superpowered CrossExample for Android 解释 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41175934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com