2011-02-03 83 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"; 

編輯:月影打我給它

相關問題