2 votes

Utilisation d'un modèle c++ comme argument d'une méthode objective-c

Comment utiliser un modèle c++ comme paramètre d'une méthode objective-c ? Je veux essentiellement faire quelque chose comme ceci :

template<typename T> 
- (void)method:(T)arg

mais cela ne fonctionne pas. cette Le document est possible, mais il ne donne pas d'exemples. Quelqu'un sait-il comment procéder ?

5voto

KennyTM Points 232647

Non, vous ne pouvez pas faire cela.

Les classes, protocoles et catégories de l'Objective-C ne peuvent pas être déclarés à l'intérieur d'un modèle C++, Un modèle C++ ne peut pas non plus être déclaré dans le champ d'application d'une interface, d'un protocole ou d'une catégorie Objective-C.

Même s'il est possible de déclarer ce modèle, il est inutile en tant que méthode Objective-C. ne peut pas être surchargés par type.

2voto

David Points 2133

Lorsque la documentation indique " Les paramètres de modèle C++ peuvent également être utilisés comme récepteurs ou paramètres (mais pas comme sélecteurs) dans les expressions de message Objective-C "Cela signifie que vous pouvez appeler une méthode Objective-C à partir d'une classe ou d'une fonction C++ modélisée, mais il n'est pas possible de créer une méthode Objective-C modélisée.

Par exemple :

template<typename T>
void f(id obj, T t) {
    [obj doSomethingWithObject:t];
}

...devrait fonctionner (bien que je ne l'aie pas testé). Bien entendu, le type utilisé lors de l'appel à f devrait être quelque chose qui pourrait valablement être transmis comme paramètre à l'option doSomethingWithObject: sinon le code d'appel ne serait pas compilé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X