2009-04-02 15 views
5

新しいプロジェクトについてMac/iPhone開発者からの意見を求めています。アイデアは、swig(www.swig.org)を使って、目的のcからC++へのブリッジを自動的に生成し、cocoa/cocoa touchからC++アプリケーションにアクセスできるようにするオープンソースイニシアチブを開始することです。Objective C to C++ブリッジの自動コード生成

Appleは目的のcとC++を目的のC++で混在させるのに非常に良いサポートを提供していますが、手作業でこれらのブリッジを書くことは面倒でバグが起こりやすいでしょう。このプロジェクトが意図していることは、C++を使って目的のcインタフェースとラッパーを自動的に生成する方法を提供することです。

私はこのアイデアに対する意見や提案を非常に感謝します。

答えて

1

それがまだ存在しないようなことがあれば驚くかもしれないと私は思っています。一方、C++を直接コンパイルすることができます(拡張子が.mmのものを見てください)。それはややこしいかもしれません。

4

私はこれが必要ではないと思います。 Objective-C++では、ブリッジはまったく必要ありません。 C++クラスが定義されている場合、Objective-C++コードのどこでもそのクラスを使用できます。たとえば、メソッド内:

- (void)myObjCMethod { 
    Foo myFoo; 

    myFoo.someMethod(); 

    //etc. 
} 

あなたはC++のクラスを指すインスタンス変数を持つことができるので、私は、テンプレートことができるとは思わない

@interface Bar : NSObject { 
    Foo *foo; 
} 

@property (assign) Foo * foo; 
@end 

@implementation 
@synthesize foo; 

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

- (id)init { 
    if(self = [super init]) { 
    foo = new Foo(); 
    } 

    return self; 
} 

- (void)aMethod { 
    self.foo->barMethod(); 
} 

ようにあなたは、Objective-Cのクラスを定義することができますObjective-Cのメソッドですが、Objective-C++のC++テンプレートのインスタンス化は公正なゲームです。 Objective-CはCの厳密なスーパーセットと同じように、Objective-C++はObjective-Cスタイルのクラスとメッセージの受け渡しを追加するC++のスーパーセットです。

Objective-Cのオブジェクトモデルでは、複数の継承や演算子のオーバーロードなどがサポートされていないため、C++クラスを「ブリッジ」したい場合は一般的に問題があります。

関連する問題