[C++-sig] Ownership of a C++ object extended in Python using wrapper
alexandre.hamez at gmail.com
Tue Mar 16 20:56:42 CET 2010
On 16 mars 2010, at 13:12, Neal Becker wrote:
> Alexandre Hamez wrote:
>> Hi all,
>> I have a C++ library that needs to store in a hash map user's code, that
>> is, Python-extended objects. To make the C++ interface available to
>> Python, I use boost::python::wrapper, as stated in the tutorial
>> Because I store this extend objects, I need to tell Python that I've got a
>> reference on these objects.
>> A thread from 2007
>> states there is a problem for this particular use case, but in the end, no
>> solution is given. So my question is the following: as of today, what is
>> the correct way to tell Python we hold a reference to Python extend
>> objects of C++ classes, using the boost::python::wrapper mechanism?
>> Alexandre Hamez
Thanks for answering so quickly.
> I've use 2 methods:
> 1) with_custodian_and_ward
OK, I didn't think of this method. Seems a good way to do it.
> 2) boost::shared_ptr
For this point, do you mean you just take the objects that should seen they references increased by a shared_ptr? Just after having asked this question, I tried with this simple solution, and it seems to work. I hope there is no hidden potential crash :-)
Do you use these two methods conjointly in the same project? Or did you identify some use cases which favor a method rather the other one?
More information about the Cplusplus-sig