2011-02-03 59 views
0

美好的一天精彩的电脑人们的地球!请求会员______这是非班级类型

这里是一个叫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*' 

任何帮助非常感谢!

+0

也许这是一个运算符优先级的错误?尝试 - >而不是。访问mAudioData。 – 2011-02-03 12:11:56

回答

7

AudioQueueBufferRefAudioQueueBuffer指针。 mBuffers是这些的数组。因此,指的是mBuffers元素的成员时,你应该使用->.

printf("%i\n", &mBuffers[i]->mAudioData); 

(我猜你可能不希望&要么 - 通过mAudioData举行的地址似乎是一种更有益的事情打印比在其AudioQueueBuffer结构中该成员的位置)

1

你正在处理一个指向AudioQueueBuffer的指针数组。

尝试访问字段中使用的->代替.

assert(mBuffers[i]); 
std::cout << &mBuffers[i]->mAudioData << "\n"; 

编辑:月影打我给它