objective c, c++ et templates...
Bonjour,
Je suis en train de porter un logiciel en c++ sur iPhone.
Le code contient de nombreux templates c++ contenus dans des .h
J'ai renommé les .cpp en .mm mais comment faire pour les .h contenant des templates? sachant que ces templates doivent être utilisés par un fichier objective c....
Je suis en train de porter un logiciel en c++ sur iPhone.
Le code contient de nombreux templates c++ contenus dans des .h
J'ai renommé les .cpp en .mm mais comment faire pour les .h contenant des templates? sachant que ces templates doivent être utilisés par un fichier objective c....
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Donc pour ton problème, il te faudra faire des "wrappers", des classes en Objective-C qui vont utiliser tes templates C++, et n'exposer que des API compatibles Objective-C pour les utiliser avec ce langage.
Le plus simple est même de faire un wrapper en C++ qui utilise ton template directement, de sorte de faire abstraction de ce template. Et utiliser ce wrapper C++ (qui du coup ne fait plus mention de ces notions de templates) dans des ficheirs Objective-C++ donc .mm (et il n'y aura donc plus de templates dans tes .h)
Forcer à utiliser le compilateur g++ et non gcc est aussi une solution, mais je doute que ce soit suffisant, la syntaxe de templates propres à C++ (avec les "classe<Template>") étant en compétition avec la syntaxe des protocoles Objective-C.
Merci de ta réponse détaillée. Il me reste un autre problème les pthreads... mais c'est une autre histoire...
???
Si je fais:
CPP* cpp=[[CPP alloc] init];
aucun message d'erreur et ça m'affiche "buffer = 1000" dans la console, donc pour moi, il n'y a pas de problème
Mais comment fais-tu (et fait-il, le compilo) pour distinguer :
- une variable d'instance déclarée comme type MaClasseObJC et devant implémenter le protocole MonProto (comme on déclare par exemple un delegate avec [tt]id<MachinDelegate>[/tt] quoi)
- et une variable d'instance déclarée comme type MaClasseCpp template, générée avec comme template MonType ?
C'est selon le contexte du nom (il sait que MaClasseObjC est une classe Objective-C et que MaClasseCpp est un class-template C++) ?
Même si le compilo arrive à s'y retrouver, du côté du code, c'est pas clair de toute façon ^^
Thx