2010-12-16 152 views
0

J'ai une fonction C++ que j'appelle d'Objective CI. J'ai besoin de passer des variables en référence à la fonction C++. Mais j'obtiens l'erreur suivante dans xcode - "Expected '; , » ou ')' avant 'jeton &' dans foo.h »Passage de types de données primitifs par référence dans Objective C

déclaration de la fonction "foo.h"

#ifdef __cplusplus 

extern "C" 
{ 
#endif 

NSString * LLtoUTM(double Lat,double Long,double &UTMNorthing, double &UTMEasting); 

#ifdef __cplusplus 
} 
#endif 

d'appel de fonction dans test_viewcontroller.m

double UTM_x; 
double UTM_y; 
UTMzone = [[NSString alloc] init];  
UTMzone = (NSString *) LLtoUTM(latitude,longitude,UTM_y,UTM_x); 

Quelqu'un peut-il me dire ce qui ne va pas?

Répondre

0

Modifiez le fichier à tester_viewcontroller.mm.

Vous lui avez dit de compiler comme un fichier Objective-C, qui ne comprend pas les références. '.mm' signifie Objective-C++, qui peut mélanger Obj-C et C++ ensemble comme ce que vous essayez de faire.

+0

@Joshua - Je l'ai essayé.Mais cela affecte d'autres codes obj-C que j'ai écrits dans test_viewcontroller.m (je reçois 50 erreurs et je n'ai pas la patience de le déboguer) .Il y a-t-il un passage C++ par référence dans l'objectif c? – Janani

+0

Vous ne devriez pas avoir d'erreurs à moins que vous ayez fait quelque chose ... mais le plus proche sera votre C standard et l'adresse de DEREF –

+0

Sur une autre note, [[NSString alloc] autorelease]; est complètement faux. alloc/init ne doit jamais être séparé. –

0

Vous ne pouvez simplement pas le faire en Objective-C - car les références n'existent pas en C. Elles sont une fonctionnalité C++. Vous devez donc utiliser Objective-C++, ce qui signifie essentiellement que vous modifiez les extensions de vos fichiers Objective-C en ".mm".