Objective-C と C++ を混在させる必要があります。すべての C++ を 1 つのクラス内に隠し、他のすべてをプレーンな Objective-C のままにしたいと考えています。問題は、いくつかの C++ クラスをインスタンス変数として使用したいということです。これは、他のクラスによってインクルードされるヘッダー ファイルで言及する必要があることを意味し、C++ はアプリケーション全体に広がり始めます。これまでのところ、私ができる最善の解決策は次のようになります。
#ifdef __cplusplus
#import "cppheader.h"
#endif
@interface Foo : NSObject
{
id regularObjectiveCProperty;
#ifdef __cplusplus
CPPClass cppStuff;
#endif
}
@end
これは機能します。実装ファイルにはmm
拡張子があり、C++ と混合された Objective-C としてコンパイルされ、C++ の#ifdef
ロックが解除されます。他の純粋に Objective-C のクラスがヘッダーをインポートすると、C++ のものは隠され、クラスは特別なものを認識しません。これはハックのように見えますが、より良い解決策はありますか?