如何创建指向结构的指针并输入类型?

时间:2011-05-08 15:39:36

标签: objective-c c oop

有人可以告诉我这里哪里出错吗?我正在尝试创建一个指向传递给函数的struct aqData的指针,并且类型类型将它强制转换为结构类型AQPlayerState。

我收到错误 - 使用未声明的标识符“AQPlayerState”和预期的表达式

    @implementation AudioPlayer

#define kNumberBuffers 3

struct AQPlayerState {
    AudioStreamBasicDescription   mDataFormat;
    AudioQueueRef                 mQueue;
    AudioQueueBufferRef           mBuffers[kNumberBuffers];
    AudioFileID                   mAudioFile;
    UInt32                        bufferByteSize;
    SInt64                        mCurrentPacket;
    UInt32                        mNumPacketsToRead;
    AudioStreamPacketDescription  *mPacketDescs;
    bool                          mIsRunning;
};

static void HandleOutputBuffer (
                                void                *aqData,
                                AudioQueueRef       inAQ,
                                AudioQueueBufferRef inBuffer
                                ) {

    struct AQPlayerState *pAqData = (AQPlayerState *) aqData;

提前感谢您提供任何帮助

1 个答案:

答案 0 :(得分:3)

我认为Objective-C的行为与C相同。如果不是,则可能不适用于Objective-C

C中的

结构被其“全名”识别。 尝试

    struct AQPlayerState *pAqData = (struct AQPlayerState *) aqData;

甚至更好,根本不投。 C编译器知道如何从void*转换为任何其他指向对象的指针

    struct AQPlayerState *pAqData = aqData;
  • 隐式转化:良好
  • 显式转换(演员):不太好