Alexandre Hamez wrote: > > 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 >>> >> (http://www.boost.org/doc/libs/1_42_0/libs/python/doc/tutorial/doc/html/python/exposing.html#python.class_virtual_functions). >>> Because I store this extend objects, I need to tell Python that I've got >>> a reference on these objects. >>> A thread from 2007 >>> (http://mail.python.org/pipermail/cplusplus-sig/2007-March/011790.html) >>> 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? >>> >>> Thanks, >>> --------------------- >>> 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? >
Looking at some of my old code, I'd say I used one method or the other depending on the phase of the moon. Haven't mixed them (sounds like a bad idea). _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig