// ----------------------------------- ---------------------------------Comment écrire une classe de gestion C++ pour l'objectif C
MISE À JOUR: J'ai foiré. J'ai laissé un appel directement à openfeint dans mon AppDelegate-> onApplicationWillResignActive qui causait l'erreur C++ du compilateur.
Mes interprétations, le singleton fonctionne si quelqu'un pensait à essayer la même chose. Assurez-vous simplement d'inclure l'en-tête dans le fichier .m et non le fichier d'en-tête.
// -------------------------------------------- Je construis une application pour iPhone, et j'utilise le SDK/Library/Framework (??) d'Openfeint est écrit en C++.
Je me demande s'il est possible d'écrire une classe pour s'interfacer avec C++ afin de ne pas avoir à changer mes classes ObjC en fichiers .mm.
J'ai essayé de créer un singleton, dans l'espoir que je puisse l'inclure dans les fichiers est en-tête .m normal, mais cela ne fonctionne pas, je dois encore faire le fichier qui comprend l'en-tête .mm
La raison pour laquelle je veux faire ceci (ou quelque chose comme ceci) est parce que je n'ai aucune expérience avec le C++, et la modification des fichiers ObjC en C++ a provoqué des erreurs et des avertissements.
Voici le singleton créé en ...
// --------------------------------------------------------------------
// 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
S'il vous plaît ne pas inventer vos propres termes, en particulier ne pas inventer vos propres étiquettes. –
Mon diable, je ne savais pas que j'avais fait ça. – gargantuan