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 ?