C++クラスインスタンスで関数呼び出しを行う必要があるObjective-Cクラスを作成しています。この提案を見つけましたが、試してみると、タイプ'structMyCPlusPlusClass'の定義が不完全であるというエラーが発生します。
struct MyCPlusPlusClass;
typedef struct MyCPlusPlusClass MyCPlusPlusClass;
@interface MyBridgeClass() {
MyCPlusPlusClass *my_CPlusPlus;
}
...
- (id)initWithMrGame:(MyCPlusPlusClass *)cPlusPlus
{
self = [super init];
if (self) {
my_CPlusPlus = cPlusPlusClass;
my_CPlusPlus->p_favorite_integer = 0; // Compiler error
}
return self;
}
実際の定義は、チャレンジの別のレイヤーを追加するために、プリコンパイラーによって生成された.mmファイルで行われます。
これをどのように機能させることができますか?
編集:アダムの答えを解釈する
// in MyCode.h
struct MyCPlusPlusClass; // Forward declaration, no need for #include/#import
@interface MyBridgeClass() {
struct MyCPlusPlusClass *my_CPlusPlus;
}
// in MyCode.m
#include MyCode.h
// in BigGenerateFile.mm
class MyCPlusPlusClass;
class MyCPlusPlusClass { ... }
私の目標は、MyCode.mでMyCPlusPlusClassを使用できるようにすることですが、コンパイラーが非常に不満になるため、.mmファイルを含めることができません。このことを設計する方法は、私を別の道に向かわせることになるかもしれません。