0

这个问题的答案解释了不透明指针是在 Objective C++ 头文件中包含 C++ 成员变量的好方法。尝试遵循示例时出现编译错误。这是我的标题中的相关代码,相应的编译器错误显示为注释:

struct ADSR_opaque; // error: forward declaration of 'struct ADSR_opaque'

@interface LoopyPulser : NSObject{

    float _pulseRate;
    UInt32 tickInterval;
    UInt32 step;
    InMemoryAudioFile * audioFilePlayer;
    ADSR_opaque* env; //  error: expected specifier-qualifier-list before 'ADSR_opaque'
    Pattern * pattern;
    float loopLengthRatio;
    float volume;
}

我在这里做错了什么简单的事情吗?

4

1 回答 1

2

我对以下最小样本没有任何问题:

struct ADSR_opaque;
@interface LoopyPulser : NSObject {
    struct ADSR_opaque* env;
}
@end

如果您在普通的 Objective-C 文件(不是 Objective-C++)中包含标头,则必须添加struct.

或者使用 typedef:

struct ADSR_opaque_;
typedef struct ADSR_opaque_ ADSR_opaque;
@interface LoopyPulser : NSObject {
    ADSR_opaque* env;
    // ...
于 2010-03-19T23:53:36.373 回答