0

この質問に対する答えは、不透明なポインターがC++メンバー変数をObjectiveC++ヘッダーに含めるための良い方法であることを説明しています例に従おうとすると、コンパイルエラーが発生します。これが私のヘッダーの関連コードで、対応するコンパイラエラーがコメントとして表示されています。

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 に答える