on Mon Apr 02 2007, "Francis Moreau" <francis_moreau-AT-hotmail.com> wrote:
Hi,
I am passing Python objects to C++ through a shared_ptr smart pointer and it's work well. However I need to have the same behaviour as shared_ptr but with my own version of smart pointer. I try to register and expose my custom smart pointer but I have this compilation error:
boost/python/pointee.hpp(28) : error C2039: 'element_type': is not a member of 'CountedObjPtr<T>' with [ T=PyCallEngineState ] boost/python/pointee.hpp(38) : see reference to class template instantiation 'boost::python::detail::pointee_impl<false>::apply<T>' being compiled with [ T=CountedObjPtr<PyCallEngineState> ] boost/python/register_ptr_to_python.hpp(17) : see reference to class template instantiation 'boost::python::pointee<T>' being compiled with [ T=CountedObjPtr<PyCallEngineState> ] PythonModules.cpp(113) : see reference to function template instantiation 'void boost::python::register_ptr_to_python<CountedObjPtr<T>>(void)'being compiled with [ T=PyCallEngineState ]
Please read http://www.boost.org/libs/python/doc/v2/pointee.html However, be aware that you won't get exactly the "magic" shared_ptr behavior described in http://www.boost.org/libs/python/doc/v2/faq.html#xref unless your pointer has a deleter just as shared_ptr does AND you do some extra work to define special converters for it (and perhaps not even then; I haven't looked into the details). -- Dave Abrahams Boost Consulting www.boost-consulting.com Don't Miss BoostCon 2007! ==> http://www.boostcon.com