Objective-CとObjective-C++の両方から使用可能なObjective-C++クラスインターフェイスを作成しています。問題はObjective-Cから使用可能でなければならないので、単にC++型を使うことができないということです。私はポインタを使用してそれをやりたいと思います:Objective-CコードでObjective-C++インスタンス変数を使用する
@interface SXDiff : NSObject {
@private
#ifdef __cplusplus
dtl::Diff<std::string, std::vector<std::string> > *_diff;
#else
void *_diff;
#endif
}
...
@end
このとき何らかの問題が発生する可能性がありますか?これを行うより良い方法はありますか?
ポインタの使用がちょうどIVARの大きさは、Objective-CのとObjective-C++の両方で同じになるように取得することであることに注意してください。 ivarはクラス実装のSXDiff
(@private
)からのみ使用できます。この実装はObjective-C++で記述されています。
なぜあなたがobj-Cを使いたいん興味があるだけ ? –
私はObjective-Cで書かれたアプリケーションを持っており、そのクラスの1つでC++コードを使いたいと思っています。 –
あなたはどちらのコンパイラを使用していますか? LLVM 2.0以降では、クラス拡張を使って実装ファイルに 'dtl :: Diff'を宣言できます。 – Joe