私はObjective-Cにかなり慣れていないので、プロジェクト用にiCloudユーティリティライブラリを構築しています。Objective-CでiCloudユーティリティクラスを作成しました。Objective-CでC++クラスを使用することについて多くの質問があることに気づきましたが、その逆はほとんどありません。問題は、私たちのプロジェクト(およびその上にプロジェクトが構築されているエンジン)が完全にC ++で記述されているため、私が作成したObjective-C icloudクラスは、私が作成しているC++インターフェイスからアクセスできる必要があることです。
次に例を示します。
iCloudUtils.h
#import <Foundation/Foundation.h>
@interface iCloudUtil : NSObject
@property(nonatomic, assign, getter=isAvailable) BOOL iCloudIsAvailable;
@property (assign) NSString *urlToFile;
-(bool) init_iCloud;
-(void) loadDocument: (NSString*)fileUrl;
@end
iCloudUtils.m
#import "iCloudUtil.h"
@synthesize urlToFile = _urlToFile;
@synthesize iCloudIsAvailable = _iCloudIsAvailable;
//////////////////////////////////////////////////////
@implementation iCloudUtil
-(bool) init_iCloud{
//blah blah
}
-(void) loadDocument: (NSString*)fileUrl{
//more blah blah
}
@end
私がこれを使おうとしているC++クラスは次のようなものです。
iCloudInterface.h
#ifndef __ICloudInterface__
#define __ICloudInterface__
class ICloudInterface {
static ICloudInterface *_instance;
bool iCloudIsAvailable;
public:
ICloudInterface();
~ICloudInterface();
bool init_iCloud();
};
#endif
私がやりたいのは、C ++クラスでiCloudUtilsのインスタンスを作成できるようにすることですが、「プログラム内の漂遊'@'」に関する200以上のエラーが発生しない限り、c++クラスに#includeすることはできません。私はObjective-Cに非常に不慣れであり、C ++との混合についてはそれほど経験がないので、誰かがこれを達成する方法についてアドバイスを手伝ってくれるでしょうか?
編集:それを明確にするために、私はすでに.cppの名前を.mmに変更しようとしましたが、これは問題を修正していません。
Edit2:また、ファイルを.mmに変更して(間違っている場合は訂正してください)読んで理解したことから、それを含むすべてのファイルも.mmに変更する必要があります。単一のオプションクラスに合わせて非常に多数のファイルを変更する必要があるため、これを行うことはできません(このプロジェクトとそのエンジンはすべてc ++であり、これはクロスプラットフォームのエンジンとプロジェクトであることに注意してください)。