2011-02-24 6 views

答えて

5

あなたは、その後-deallocで、IVARにdeleteを呼び出し、IVARに割り当て、あなたのinit方法の内側にあなたのC++クラスのnewインスタンスを作成して、Objective-CのクラスのC++オブジェクトを所有することができます。

@interface SomeClass : NSObject { 
    SomeCPPClass *cpp_object; 
} 
@end 

@implementation SomeClass 

- (id) init { 
    self = [super init]; 
    if(self) { 
     cpp_object = new SomeCPPClass(); 
    } 
    return self; 
} 

- (void) dealloc { 
    delete cpp_object; 
    [super dealloc]; 
} 

@end  
+0

どのようにするか私はそれをivarに割り当てると、あなたは私に詳細を教えてもらえますか? – Ali

+0

これは私がすでに行っていることですが、このクラスの関数は動作しません。私の過去の質問を参照してくださいhttp://stackoverflow.com/questions/5105177/call-c-class-オブジェクト内のc-one – Ali

1

あなたのC++オブジェクトがそれを含むObjective-Cオブジェクトと同じライフサイクルを持つ場合、Objective-CクラスにC++オブジェクト(ポインタではない)を置くだけでよい:

@interface MyClass { 
    CppObject myObject; 
} 
@end 
+0

コンストラクタは呼び出されますか? –

+0

@WTP:はい、コンストラクタが呼び出されます。これは、C++オブジェクトの動作を期待するように動作します。 – Ferruccio

関連する問題