J'essaie d'envelopper un code C ++ avec Cyron. J'ai une classe qui utilise une méthode de modèle, mais n'est pas un modèle lui-même.
# wrong! cdef extern from "SomeClass.h": cppclass SomeClass [T]: SomeClass(T& spam)
3 Réponses :
facile. (Ou je pense que c'est) dans la classe C ++, le membre est modelé, alors que dans Cython, vous déclarez que la classe sera modélisée. Changez votre code soit sur:
cdef extern from "SomeClass.h": cppclass SomeClass: SomeClass [T](T& spam)
Le premier n'est pas réalisable / équivalent, et ce dernier ne fonctionne pas comme présenté. (Il serait intéressant de savoir s'il y a un soutien ou une certaine solution de contournement.)
À partir de la version 0.19, la documentation ne mentionne que des classes de modèle, pas des méthodes de modèle. docs.CyTHon.org/src/userguide/wrappe_cplusplus.html
Selon Ce , les méthodes de modèle ne semblent pas être prises en charge, seuls Modèle Calalses
Que diriez-vous de Boost Wrapper pour Cyron? P>
http://www.boost.org/ DOC / LIBS / 1_54_0 / LIBS / PYTHON / DOC / INDEX.HTML P>
Bienvenue dans la version 2 de Boost.python, une bibliothèque C ++ qui permet une interopérabilité transparente entre C ++ et le langage de programmation Python. La nouvelle version a été réécrite à partir de la terre, avec une interface plus pratique et flexible, ainsi que de nombreuses nouvelles capacités, y compris la prise en charge de: Références et pointeurs Coercitions de type enregistrées globalement Conversions de type transversal automatiques Surcharge efficace de la fonction C ++ à la traduction d'exception Python Arguments par défaut Mot-clé Arguments Manipuler des objets Python en C ++ Exportation d'itérateurs C ++ en tant qu'hétérateurs Python Cordes de documentation p>
Je suppose que vous recherchez quelque chose comme ça, il est déjà là dans le cadre de la bibliothèque Boost C ++ P>
Je ne suis pas sûr de ce que vous essayez de dire.
Pour une méthode de modèle non constructeur, en utilisant la classe non-modèle suivante:
cdef extern from "someclass.h": cppclass SomeClass: void other[T](T &spam)
Le soutien de Cyron pour C ++ est toujours très limité, le plus probable que vous ne pouvez pas. Je ne sais pas avec certitude, cependant. Une solution de contournement qui me vient à l'esprit est la spécification des surcharges pour les types que vous utilisez réellement ce constructeur avec.