Thanks Jim!

On Sat, May 12, 2012 at 4:03 PM, Jim Bosch <tallji...@gmail.com> wrote:
> On 05/12/2012 12:22 PM, DarkAnt wrote:
>>
>> I'm trying to create a boost::python::dict that stores another
>> boost::python::dict.
>>
>> int main()
>> {
>>        Py_Initialize();
>>        boost::python::dict parent;
>>        try{
>>                parent["child_dict"] =
>> boost::make_shared<boost::python::dict>(boost::python::dict());
>>        }
>>        catch(...){
>>                PyErr_Print();
>>        }
>>        return 0;
>> }
>>
>> TypeError: No to_python (by-value) converter found for C++ type: class
>> boost::shared_ptr<class boost::python::dict>
>>
>> I was under the impression that boost::shared_ptr had special
>> treatment in boost::python(that is the library already knew what to do
>> with it). I'm not quite sure if I'm supposed to write this to_python
>> converter or if I'm supposed to achieve this in a different manner. If
>> I do write the to_python converter what's the method of keeping track
>> of both reference counts?
>
>
> There's no need to use shared_ptr on Python objects; those will be tracked
> using Python's own reference counting system.
>
> Just doing
>
> parent["child_dict"] = boost::python::dict();
>
> will do what you want.
>
> Note that boost::python::dict (as well as boost::python::object, etc.) is
> actually a smart pointer itself, holding a PyObject* and
> incrementing/decrementing the reference count in the C++ copy constructor,
> assignment operator, and destructor.
>
> HTH!
>
> Jim
> _______________________________________________
> Cplusplus-sig mailing list
> Cplusplus-sig@python.org
> http://mail.python.org/mailman/listinfo/cplusplus-sig
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to