2010-03-17 5 views
0

this quesion에 대한 대답은 Objective C++ 헤더에 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; 
} 

여기에 잘못된 것이 있습니까?

답변

0

원본 파일의 실제 확장자는 .mm입니까?

+0

그래 :

은 또는 형식 정의를 사용합니다. 참으로 그렇습니다. – morgancodes

2

나는 다음과 같은 최소한의 샘플에 문제가없는 : 당신이 일반 오브젝티브 C 파일 (안 목표 - C++)의 헤더를 포함하는 경우

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

을, 당신은 struct을 추가해야합니다.

struct ADSR_opaque_; 
typedef struct ADSR_opaque_ ADSR_opaque; 
@interface LoopyPulser : NSObject { 
    ADSR_opaque* env; 
    // ... 
+0

감사합니다. gf, 다시 시도해 보겠습니다. – morgancodes

+0

잘 작동해야한다. 나는 다른 답변에서 구조체를 추가하는 것을 간과했다. 나는'struct'를 접두사로 사용하는 것이 선택적인 C++에 익숙하다. –