Проблема с использованием непрозрачных указателей в Objective C ++ - PullRequest
0 голосов
/ 17 марта 2010

Ответ на в этом вопросе объясняет, что непрозрачные указатели являются хорошим способом включения переменных-членов C ++ в заголовок Objective 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;
}

Есть что-то простое, что я здесь делаю неправильно?

Ответы [ 2 ]

2 голосов
/ 20 марта 2010

У меня нет проблем со следующим минимальным образцом:

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

Если вы включаете заголовок в простые файлы Objective-C (не Objective-C ++), вы должны добавить struct.

В качестве альтернативы используйте typedefs:

struct ADSR_opaque_;
typedef struct ADSR_opaque_ ADSR_opaque;
@interface LoopyPulser : NSObject {
    ADSR_opaque* env;
    // ...
0 голосов
/ 17 марта 2010

Ваш исходный файл имеет расширение .mm?

...