J'expose une classe d'arborescence C++ en utilisant Boost.Python à python. La classe de noeud contient une liste de nœuds enfants et fournit une méthodeBoost.Python: Propriété des variables de pointeur
void add_child(Node *node)
La classe Node prend possession du pointeur de nœud fourni et supprime les nœuds enfants lorsque le destuctor est appelé.
Je suis exposant la méthode add_child comme:
.def("addChild", &Node::add_child)
Ma question réelle est: Comment je ne dis Boost.Python que la classe Node prend possession des nœuds enfants?
Parce que si j'exécute le code suivant en python:
parentNode = Node()
node = Node()
parentNode.addChild(node)
l'objet référencé par la variable de nœud est supprimé deux fois à la fin du script. Une fois lorsque la variable de noeud est supprimée et une seconde fois lorsque le parentNode est supprimé.