On 11.10.2010 00:42, Jim Bosch wrote:

Essentially, what you need to do is pass a Python object to call_method
(boost::python::object or PyObject *) that already contains your C++
object. In order to get one, you need need to tell Boost.Python to
construct A and B with what it calls a "back reference". Your C++
constructors will be given a PyObject* by boost.python, pointing to the
Python objects the C++ object will be wrapped in, and you can then store
those as data members and pass the PyObject * to call_method. You can
find more information in the Boost.Python reference docs on class_,
especially the "HeldType Semantics" section.

I did checked the docs, but I think I don't get how should it be done in my case. What they talk about (as well as in the provided example) They let the user to create Python classes derived from C++ classes and launchind virtual Python function. Would ou mind providing a sample piece of code how should it be done to wrap my C++ object into PyObject* ? Thanks in advance.

By the way, the call policies on your "gen" function should be
return_value_policy<manage_new_object>, not return_internal_reference<>;
the latter is for returning data members of wrapped classes and other
things that are owned by another existing wrapped object.

Good point, thanks!


--
regards

Marek Denis

_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to