// ------------------------------------------------ --------------------

更新:我搞砸了。我在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 ++(因此这不是必需的)。

如果执行此操作时编译过程中出现错误,请发布错误,以便我们可以看到实际发生的情况。

10-07 19:55
查看更多