21290


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++間で関数コールしたい。](https://ja.stackoverflow.com/questions/21123/objctive-
c-c%E9%96%93%E3%81%A7%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E5%87%A6%E7%90%86%E3%82%92%E3%81%97%E3%81%9F%E3%81%84)

swiftから利用するため、ブリッジファイルにObjectClass.hを追加したところ、  
ObjectClass.hの★箇所で  
「`Unknown type name 'class'; did you mean 'Class'?`」と  
「`Expected ';' after top level declarator`」のエラーとなってしまいます。

[code]

    class CppClass★
    {
    public:
        CppClass();
        ~CppClass();
    
        void testPrint(void);
        void objectPrint(ObjectClass* oc);
    };
    
[/code]

swiftからC++クラスを使用する場合  
１：C++クラス→mmファイルにする  
２：C++クラスをラップするObjective-C++ファイル・ヘッダーを作成する  
３：ブリッジヘッダに「２」のヘッダーを追加する

また、このブリッジヘッダにはほかのOSSのヘッダーもimportしている状態になります。  
上記のほか何か必要となる操作はありますでしょうか。


CC BY-SA 3.0
2016-01-25T06:12:45.950
21281
2016-01-25T14:05:57.327
2017-04-13T12:52:38.920
-1
12842
question
objective-c swift2
swiftでC++クラスを利用するために、Objective-C++をブリッジヘッダーに追加すると、 「Unknown type name 'class'; did you mean 'Class'?」となりビルドエラーとなる


SwiftからC++のコードは使用できません  
Swiftから見えなくなるように隠蔽してください

例えば  
ObjectClass.h

[code]

    #import <Foundation/Foundation.h>
    
    @interface ObjectClass : NSObject
    - (void)testPrint;
    @end
    
[/code]

ObjectClass-CppAddtion.h

[code]

    #import "ObjectClass.h"
    
    class CppClass;
    @interface ObjectClass (CppAddition)
    - (void)classPrint:(CppClass*)cc;
    @end
    
[/code]

のようにC++コードを分離しObjectClass.hをブリッジヘッダに追加します

あるいは、他からの参照がないのであれば ObjectClass-CppAddtion.h は作らずObjectClass-
CppAddtion.hの内容を直接ObjectClass.mmに記述してもかまいません


CC BY-SA 3.0
2016-01-25T08:26:14.983
21290
2016-01-25T08:26:14.983
2741
21281
answer