C++과 Objective-C를 섞어 쓰려고합니다. Objective-C와 C++ 코드 사이에 단일 인터페이스 클래스를 갖고 싶습니다. 따라서 ViewController 인터페이스에 영구 C++ 객체를 갖고 싶습니다.Objective-C 클래스에 C++ 오브젝트 추가
이없는 유형 'myCppFile'의 선언을 금지함으로써 실패:
#import <UIKit/UIKit.h>
#import "GLView.h"
#import "myCppFile.h"
@interface GLViewController : UIViewController <GLViewDelegate>
{
myCppFile cppobject;
}
@end
그러나이 (내가 cppobject 통화 사이의 유지를 원하기 때문에 그것은 작동하지 않습니다 .mm 구현 파일에서 잘 작동합니다)
#import "myCppFile.h"
@implementation GLViewController
- (void)drawView:(UIView *)theView
{
myCppFile cppobject;
cppobject.draw();
}
고마워, 다른 제안은 작동하지 않는 것 같았고, 내 객체를 "id *"로 선언 한 다음 사용하려는 모든 곳에서 올바른 유형으로 캐스팅했습니다. 이것은 같은 생각처럼 보이지만 모든 여분의 캐스트를 수행 할 필요가 없으므로 훨씬 더 깨끗합니다. – Winder
저는 항상 캐스팅보다 불투명 한 포인터를 선호합니다 - 조금 더 많은 작업이 될 수도 있지만 완전한 유형의 안전성을 다시 얻게됩니다. –
나는 C/C++ 랩핑을 위해 광범위하게 사용하는 불투명 포인터를 가지고 놀았지만, 지금까지는 실제로 이득을 보지 못했다. 이 스타일을 void * 기반 스타일에 여기에 ("불투명"이 할당되고 해제 된 몇 가지 코드와 함께) 비교할 수 있습니까? http://robnapier.net/blog/wrapping-c-objc-20 –