質問: swiftでObjective-C++をブリッジヘッダーに追加すると、 「`Unknown type name 'class'; did you mean 'Class'?`」となりビルドエラーとなってしまします。 下記を参考に C++で書かれたクラス(CppClass.h、CppClass.mm) Objective-Cで書かれたクラス(ObjectClass.h、ObjectClass.mm)を用意しました。 Objctive-C、C++間で関数コールしたい。 swiftから利用するため、ブリッジファイルにObjectClass.hを追加したところ、 ObjectClass.hの★箇所で 「`Unknown type name 'class'; did you mean 'Class'?`」と 「`Expected ';' after top level declarator`」のエラーとなってしまいます。 ``` class CppClass★ { public: CppClass(); ~CppClass(); void testPrint(void); void objectPrint(ObjectClass* oc); }; ``` swiftからC++クラスを使用する場合 1:C++クラス→mmファイルにする 2:C++クラスをラップするObjective-C++ファイル・ヘッダーを作成する 3:ブリッジヘッダに「2」のヘッダーを追加する また、このブリッジヘッダにはほかのOSSのヘッダーもimportしている状態になります。 上記のほか何か必要となる操作はありますでしょうか。
回答: SwiftからC++のコードは使用できません Swiftから見えなくなるように隠蔽してください 例えば ObjectClass.h ``` #import @interface ObjectClass : NSObject - (void)testPrint; @end ``` ObjectClass-CppAddtion.h ``` #import "ObjectClass.h" class CppClass; @interface ObjectClass (CppAddition) - (void)classPrint:(CppClass*)cc; @end ``` のようにC++コードを分離しObjectClass.hをブリッジヘッダに追加します あるいは、他からの参照がないのであれば ObjectClass-CppAddtion.h は作らずObjectClass-CppAddtion.hの内容を直接ObjectClass.mmに記述してもかまいません