8
votes

Emballage C ++ Modèle Fonction / Méthode de Cyron

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)


1 commentaires

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.


3 Réponses :


0
votes

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)


3 commentaires

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



-1
votes

Que diriez-vous de Boost Wrapper pour Cyron?

http://www.boost.org/ DOC / LIBS / 1_54_0 / LIBS / PYTHON / DOC / INDEX.HTML

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

Je suppose que vous recherchez quelque chose comme ça, il est déjà là dans le cadre de la bibliothèque Boost C ++


1 commentaires

Je ne suis pas sûr de ce que vous essayez de dire.



2
votes

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)


0 commentaires