// ------------------------------------------------ --------------------
更新:我搞砸了。我在AppDelegate-> onApplicationWillResignActive中直接给openfeint留下了调用,这导致了编译器C ++错误。
我的Appologies,如果有人想尝试同一件事,则单例确实起作用。只要确保在.m文件中包含标头,而不要在标头文件中包含标头即可。
// ------------------------------------------------ --------------------
我正在构建一个iPhone应用程序,并使用用C ++编写的Openfeint SDK /库/框架(??)。
我想知道,是否可以编写一个类与C ++接口,以便不必将ObjC类更改为.mm文件。
我尝试创建一个单例,希望可以将其标头包含在普通的.m文件中,但这不起作用,我仍然需要制作包含标头.mm的文件
我想执行此操作(或类似操作)的原因是因为我没有使用C ++的经验,并且将ObjC更改为C ++文件已经导致了错误和警告。
这是我创建的单身人士...
// --------------------------------------------------------------------
// OpenfeintController.h
// --------------------------------------------------------------------
#import <Foundation/Foundation.h>
@interface OpenfeintController : NSObject {
NSString *productKey, *secretKey, *displayName;
}
+(OpenfeintController*)sharedOpenfeintController;
- (void) initializeWithProductKey:(NSString *)pKey andSecretKey:(NSString *)sKey andDisplayName:dName;
- (void) launchOpenFeint;
- (void) submitHighScoreToLeaderboard:(NSString *)leaderboardId;
@end
放大
// --------------------------------------------------------------------
// OpenfeintController.mm
// --------------------------------------------------------------------
#import "OpenfeintController.h"
#import "OpenFeint.h"
static OpenfeintController *singletonOpenfeintController = nil;
@implementation OpenfeintController
+(OpenfeintController*)sharedOpenfeintController {
@synchronized(self) {
if (!singletonOpenfeintController) {
singletonOpenfeintController = [[OpenfeintController alloc] init];
}
}
return singletonOpenfeintController;
}
- (void) initializeWithProductKey:(NSString *)pKey andSecretKey:(NSString *)sKey andDisplayName:dName
{
//[OpenFeint initializeWithProductKey:pKey andSecret:sKey andDisplayName:dName andSettings:nil andDelegates:nil];
}
- (void) launchOpenFeint
{
}
- (void) submitHighScoreToLeaderboard:(NSString *)leaderboardId
{
}
@end
最佳答案
确实可以做到这一点,很遗憾,您实际上并没有提供任何可以帮助我们确定您遇到的问题的信息。您说OpenfeintController.h
标头的用户必须是Objective-C ++,但您发布的标头中似乎没有包含任何C ++(因此这不是必需的)。
如果执行此操作时编译过程中出现错误,请发布错误,以便我们可以看到实际发生的情况。