2009-12-11 51 views
0

// ----------------------------------- ---------------------------------如何爲Objective C編寫C++處理類

更新:我搞砸了。我在我的AppDelegate-> onApplicationWillResignActive中直接致電openfeint,導致編譯器C++錯誤。

我的Appologies,單身人士確實工作,任何人都應該考慮嘗試同樣的事情。只要確保將頭文件包含在.m文件中而不是頭文件中。

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

我正在構建一個iPhone應用程序,並使用Openfeint SDK/Library/Framework(??)是用C++編寫的。

我想知道,是否可以編寫一個類來與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 

Implmentation

// -------------------------------------------------------------------- 
// 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 
+0

請不要發明自己的條款,特別是不要發明自己的標籤。 – 2009-12-11 13:32:03

+0

我的不好,我沒有意識到我已經做到了。 – gargantuan 2009-12-11 14:28:23

回答

0

我做不同的C++庫(GeographicLib)類似的東西和它的作品沒有任何問題。只要確保在.h文件中沒有C++代碼或導入的C++頭文件。儘管如此,我沒有看到你的代碼有什麼問題,所以我恐怕我無法真正幫助你。我沒有OpenFeint的經驗。

2

這當然是可以做到的,但不幸的是,您並沒有真正提供任何信息來幫助我們確定您遇到的問題。您說OpenfeintController.h頭文件的用戶需要是Objective-C++,但是您發佈的頭文件中沒有包含任何C++(所以這不應該是必需的)。

如果編譯過程中出現錯誤,那麼發佈錯誤以便我們可以看到實際發生的情況。