Thanks, Roman. It solved the problem. Can't believe this '&' takes me two days.
On Tue, Jan 27, 2009 at 4:26 PM, Roman Yakovenko <roman.yakove...@gmail.com>wrote: > 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 > -- Time is mana, we must hurry
_______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig