2009/1/27 ZaeX <zaex...@gmail.com>: > Hi, c++-sig: > > I got a problem involving shared_ptr here, > according to some threads here I believed it should be solved by > implicitly_convertible, > however after many tries, I still cannot make it work. although this problem > may look old, I really need your help or hint. > My environment is WinXP + python 2.5.4 + boost1.36 > ///////////////////////////////////////// > class A > { > std::vector<int> vec; > public: > A(){} > A(boost::shared_ptr<A>& ptr) :vec(ptr->vec) > std::vector<int>& GetV(){return vec;} > }; > > class D > { > boost::shared_ptr<A> m_aa; > public: > boost::shared_ptr<A>& GetAA() {return m_aa;} > }; > > implicitly_convertible<boost::shared_ptr<A>, A>(); > /////////////////////////////////////// > I exported the A and D, and also added the implicitly_convertible > but when I tried to do this in python: > > d = D() > a = d.GetAA() > a.GetV() > > Python interpreter will complains > Boost.Python.ArgumentError: Python argument types in > A.GetV(A) > did not match C++ signature: > GetV(class A {lvalue}) > --------------------------------------------------------------------- > Can you give some help on this, I have been stuck here for 2 days.
I suggest you not fight with Boost.Python - pass/return shared_ptr<...> by value. The code will start to work. -- Roman Yakovenko C++ Python language binding http://www.language-binding.net/ _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig