2011-04-06 5 views
2

저는 C++ 클래스 IPoint를 가지고 있고 obj-c 클래스의 인스턴스 변수로 IPoint 인스턴스를 사용하려고합니다. 그러나 컴파일 할 때 오류가 발생합니다. "Ipoint '앞에 예상 된 한정자 - 목록이 있습니다. 그러나"IPoint.h "인 원하는 헤더를 포함 시켰습니다.obj-c 클래스의 인스턴스 변수로 사용되는 C++ 클래스 객체

하지만 인스턴스 변수로 만들지 않고 클래스를 초기화 할 때 cpp 객체를 사용하면 작동합니다.

개체 변수에 저장해야하는 특정 요구 사항이 있습니다. 개체 또는 다른 것에 대한 래퍼를 작성하는 것과 같은 방식으로 작동하게하려면 프로젝트에서 더 이상 필요합니다. 친절하게 도와주세요!

답변

4

, 당신은 이전에 대한 * 무효가 인스턴스 변수를 선언 #ifdef와를 사용할 수 있습니다

@interface MyClass : NSObject { 
    #ifdef __cplusplus 
    IPoint *point; 
    #else 
    void *point; 
    #endif 
} 

안타깝게도 C++ 객체의 수명을 수동으로 관리하고 Objective-C++ init 및 dealloc 메소드에서 new로 만들고 삭제할 필요가 있음을 의미합니다.

1

C++ 클래스 ivar가있는 Objective-C 클래스의 헤더는 Objective-C++로 컴파일해야합니다. 소스 코드 파일 이름에서 .m 확장자 대신 .mm 확장자를 사용하거나 Xcode에서 Objective-C++로 컴파일하도록 파일을 설정하십시오. 당신이 목표 - C와 목표 - C++ 코드 모두에 당신의 목표 - C 클래스 인터페이스를 # import를 할 수있게하려면

관련 문제