이것은 이전에 질문 한 내용을 더 잘 이해하는 내용입니다.Objective-C++에서 boost :: shared_ptr
나는 다음 목표 - C 내가 부스트 :: shared_ptr의 (나는이 문제에 대해 선택의 여지가에 cppobj를 사용할 필요가 전혀 다르게 OBJ를 만드는 그런
@interface OCPP
{
MyCppobj * cppobj;
}
@end
@implementation OCPP
-(OCPP *) init
{
cppobj = new MyCppobj;
}
@end
객체 ++이 그것은의 일부 내가 바꿀 수없는 거대한 도서관)
@interface NOBJ
-(void) use_cppobj_as_shared_ptr
{
//get an OCPP obj called occ from somewhere..
//troubling line here
}
@end
나는 다음을 시도해 보았는데 실패했다 : 나는 cppobj 합성을 시도했다. 그런 다음 "문제가되는 줄"에 shared_ptr을 다음과 같이 작성했습니다.
MyCppobj * cpp = [occ cppobj];
bsp = boost::shared_ptr<MyCppobj>(cpp);
처음에는 잘 작동합니다. 그런 다음 NOBJ를 파괴하고 다시 만듭니다. 내가 cppobj에 갔을 때 사라졌어. 아마도 shared_ptr은 더 이상 필요하지 않으며 그것을 사용하지 않기로 결정했습니다.
그래서 도움이 필요합니다. cppobj를 어떻게 살아있을 수 있습니까?
cppobj를 파괴하지 않고 bsp (또는 cppobj에 대한 참조)를 파괴 할 수있는 방법이 있습니까?
init 메소드에서 아무 것도 반환하지 않습니다. 일반적으로 'self'를 반환하고 반환 유형은 'id'입니다. ObjC++에서도 마찬가지입니다. – MKroehnert