c++ - 请求非类成员______

标签 c++

美好的一天,地球上出色的计算机人!

这是名为 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/

相关文章:

c++ - 私有(private)继承和 ADL 交换

c++ - 在 OpenCV 中使用 Mat 时的 exc_bad_access 虽然看起来我的索引是正确的

C++ ifstream从linux到arduino

c++ - 将 PNG 纹理导入内存而不是帧缓冲区 - 使用 C++ 和 OpenGL

c++ - 在一个简单的例子中解释并行代码执行和进一步的性能提升

c++ - 在 C++ 中使用没有对象的字符串变量调用静态类结构

c++ - 面向对象 : how to create a function "addFruit" to add fruit into a vector<fruit>

C++ 编译器不喜欢 "using INLINE = extern inline"

c++ - 数组元素的总和返回错误值

c++但是为了避免深拷贝问题