2010-04-21 3 views
21

Je souhaite utiliser/réutiliser un objet C++ avec Objective-C. J'ai un hello.h qui a la définition de la classe, et hello.cpp pour l'implémentation de la classe.Comment utiliser C++ avec Objective-C dans XCode

class Hello 
{ int getX() ... }; 

Et j'utilise cette classe dans la fonction Objective-C.

#include "hello.h" 
... 
- (IBAction) adderTwo:(id)sender 
{ 
    Hello *hi = new Hello();    
    int value = hi->getX(); 
    NSLog(@"Hello %d", value); 
    [textField setIntValue:value]; 

Lorsque je compile le code dans Xcode, j'obtiens ce message d'erreur.

 
class Hello *XXXXX 
Users/smcho/Desktop/cocoa/adderTwo/hello.h:9:0 
/Users/smcho/Desktop/cocoa/adderTwo/hello.h:9: 
error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Hello' 

Qu'est-ce qui n'a pas fonctionné?

+0

mai de cette aide ainsi: https://stackoverflow.com/a/32546879/1306012 ou http://philjordan.eu/article/mixing-objective-c-c++-and-objective-c++ –

Répondre

34

Assurez-vous de compiler ce fichier en tant que "Objective-C++".

La manière la plus simple est de renommer le * .mm.

Si vous ne souhaitez pas renommer le fichier * .m,

  1. Sélectionnez votre fichier.
  2. Ouvrir la boîte de dialogue File Info (Cmd + I)
  3. Dans Type de fichier, sélectionnez "sourcecode.cpp.objcpp"
+0

Merci l'homme !! Vous m'avez aidé à découvrir un problème similaire qui a pris mes deux jours fous. –

7

Renommez le fichier Objective-C de filename.m en filename.mm pour le compiler en Objective-C++.

Questions connexes