2009-07-03 12 views
1

私は主にC++であるプロジェクトを持っていますが、Objective-C++ライブラリにリンクしようとしています。私のようになりますヘッダーがあります。Objective C++型をC++クラス定義に組み込む

をCPlus.h:

#import "OBJCObject.h" 

class CPlus { 
    OBJCObject *someObj; 

}; 

CPlus.mm:

CPlus::CPlus() { 
    someObj = [[OBJCObject alloc] init]; 
} 

私は自分のコードの中にのObjective-C++のヘッダをインポートすると、私はで終わりますiPhone SDKの内部から何千ものエラーが発生します。ある言語を別の言語のように扱っているようです。申し訳ありませんが、この説明が貧弱な場合は、私はこれを初めてお持ちですが、やや混乱しています。

C++クラスにObjective-C/Objective-C++型を含めることはできますか?他のタイプのヘッダーを含めるために特別なことがありますか?

答えて

3

#import Objective-C(.m)ファイルからCPlus.hを実行していますか?そうであれば、それはCセマンティクスでコンパイルされており、Objective-C++を認識していないので、C++クラスを理解できません。 .mコンパイラはclassと表示され、何をすべきかわかりません。

ソースファイルが.mmである限り、Objective-CオブジェクトはC++クラス定義に含めることができ、その逆もできます。

0

次は、IPhone SDKで正常に構築されます。 C++コンストラクタを宣言し、.mmファイルで実装するようにしてください。

OBJCObject.h

#import <Foundation/Foundation.h> 

@interface OBJCObject : NSObject { 
} 

@end 

OBJCObject.m

#import "OBJCObject.h" 

@implementation OBJCObject 

@end 

CPlus.h

#import "OBJCObject.h" 

class CPlus { 
    OBJCObject *someObj; 
    CPlus(); 
}; 

CPlus.mm

#include "CPlus.h" 

CPlus::CPlus() { 
    someObj = [[OBJCObject alloc] init]; 
} 
関連する問題