0

Objective-cヘッダーでクラスc++スタイルを宣言したいのですが、「エラー:'CPPClass'の前に'='、'、'、';'、'asm'または'__属性__'が必要です」というエラーが表示されます。

これが.hファイルのコードです。

class CPPClass;  
@interface OBJCClass : NSObject  
{  
    CPPClass* m_pCPPObject;  
}  
@end

私がそれをobjective-cスタイルで実装@class CPPClassすると、それを定義するときにエラーが発生し、インターフェイス宣言が見つからないというエラーが発生します。とにかくこれを行う方法はありますか、そうでない場合は、インポートされたc++ヘッダーとともにヘッダーファイルをインポートするすべてのobjective-cクラスも.mmファイルである必要があります。

ps。mファイルの名前をmmに変更しました。

4

2 に答える 2

3

C ++をコンパイルする場合にのみ、cppクラスを宣言します。それ以外の場合は、typedefを使用して無効にします。

#ifdef __cplusplus
class CPPClass;
#else
typedef void CPPClass;
#endif

このように、非C ++コンパイルユニットは、インスタンス変数をvoidポインターと見なします。すべてのポインターは同じサイズであるため、インスタンス変数のタイプは重要ではありません。

于 2010-07-30T15:32:29.063 に答える
1

拡張子が.mmのファイルの名前を変更します。-ObjC++これにより、コンパイラはフラグを使用してコンパイルするように指示されます。

于 2010-07-30T15:01:48.393 に答える