美好的一天,地球上出色的计算机人!
这是名为 AudioQueue.h 的文件中的结构:
typedef struct AudioQueueBuffer {
const UInt32 mAudioDataBytesCapacity;
void * const mAudioData;
UInt32 mAudioDataByteSize;
void * mUserData;
const UInt32 mPacketDescriptionCapacity;
AudioStreamPacketDescription * const mPacketDescriptions;
UInt32 mPacketDescriptionCount;
#ifdef __cplusplus
AudioQueueBuffer() : mAudioDataBytesCapacity(0), mAudioData(0), mPacketDescriptionCapacity(0), mPacketDescriptions(0) { }
#endif
} AudioQueueBuffer;
/*!
@typedef AudioQueueBufferRef
@abstract An pointer to an AudioQueueBuffer.
*/
typedef AudioQueueBuffer *AudioQueueBufferRef;
然后在 AudioPlayer.h 的 header 中有这个:
AudioQueueBufferRef mBuffers[kNumberBuffers];
然后我想做的是:
for (int i = 0; i < kNumberBuffers; ++i) {
printf("%i\n", &mBuffers[i].mAudioData );
XThrowIfError(AudioQueueAllocateBufferWithPacketDescriptions(mQueue, bufferByteSize, (isFormatVBR ? mNumPacketsToRead : 0), &mBuffers[i]), "AudioQueueAllocateBuffer failed");
基本上我正在尝试访问 mAudioData 中的信息,但出现错误:
request for member 'mAudioData' in '((AQPlayer*)this)->AQPlayer::mBuffers[i]', which is of non-class type 'AudioQueueBuffer*'
非常感谢任何帮助!
最佳答案
AudioQueueBufferRef
是一个 AudioQueueBuffer
指针。 mBuffers
是这些的数组。因此,当引用 mBuffers
的元素成员时,您应该使用 ->
而不是 。
:
printf("%i\n", &mBuffers[i]->mAudioData );
(我猜你可能也不想要 &
- mAudioData 持有的地址似乎比该成员在其 AudioQueueBuffer 结构中的位置更有用)
关于c++ - 请求非类成员______,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4885915/