请求会员______这是非班级类型
问题描述:
美好的一天精彩的电脑人们的地球!请求会员______这是非班级类型
这里是一个叫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头:
AudioQueueBufferRef mBuffers[kNumberBuffers];
然后呢我m试图做的:
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结构中该成员的位置)
答
你正在处理一个指向AudioQueueBuffer的指针数组。
尝试访问字段中使用的->
代替.
:
assert(mBuffers[i]);
std::cout << &mBuffers[i]->mAudioData << "\n";
编辑:月影打我给它
也许这是一个运算符优先级的错误?尝试 - >而不是。访问mAudioData。 – 2011-02-03 12:11:56