IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaçage autre langage Python Discussion :

boost.python : générer les conversions to_python pour des classes abstraites


Sujet :

Interfaçage autre langage Python

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut boost.python : générer les conversions to_python pour des classes abstraites
    Bonjour,

    Je tente de générer des wrapppers pour une librairie qui n'expose essentiellement que des classes abstraites dans ses headers. Je souhaite également embarquer Python et exposer des objets instances de classes dérivées de ces classes abstraites. J'ai donc besoin d'une fonction de conversion de C++ vers Python pour ces classes abstraites.

    Manque de bol, les classes abstraites doivent, d'après le manuel, être qualifées avec un attribut non_copyable. Or la définition de cet attribut désactive du même coup la génération des fonctions de conversion. Evidement, il n'est pas possible de copier un objet d'une classe abstraite en utilisant un constructeur par recopier.

    Qu'à cela ne tienne ! On peut demander à boost de ne stoquer qu'un pointeur sur l'objet plutôt qu'une copie, remplaçant alors la nécessité de copie de la valeur par une nécessité de copie du pointeur. Mais pour une raison que j'ignore encore, là encore ça ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class_<A, A*>("A", no_init)...
    produira toujours l'erreur :

    error: cannot allocate an object of abstract type A
    dans un sombre développement imbriqué de templates et macros obscurs.

    Existe t-il un moyen d'exposer une classe virtuelle ET des objets de cette classe ?

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    j'y connais rien sur boost python, mais j'ai vu ça dans la doc
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Après un petit passage sur la mailing list de python, j'ai pu comprendre :

    1. Que les objets python sont liés aux objets c++ toujours par référence à moins qu'il n'ait été créé en python, ainsi il n'est pas nécessaire de modifier le Held Type.
    2. Que l'argument noncopyable annule uniquement l'enregistrement de convertisseurs de valeur, mais pas ceux des convertisseurs de pointeur/référence.
    3. Qu'il faut effectivement importer le module enregistré pour enregistrer ces convertisseurs automatiquement générés.


    Une fois que tout est fait correctement, ça fonctionne sans soucis.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 20/10/2010, 11h42
  2. outil supportant les dialectes Xml pour des tests
    Par saw-next dans le forum XQUERY/SGBD
    Réponses: 1
    Dernier message: 28/06/2010, 17h12
  3. Réponses: 10
    Dernier message: 04/09/2009, 15h06
  4. Réponses: 3
    Dernier message: 18/02/2009, 10h00
  5. Créer les get et set des classes
    Par cameleon2002 dans le forum JBuilder
    Réponses: 3
    Dernier message: 17/09/2003, 21h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo