The problem here is actually a C++ issue, not a Boost.Python one. Friend functions aren't considered to be part of the scope of the class that they're friends with, so when referring to them, just use e.g. "&GetHeading", not "&Turtle::GetHeading".
Jim On Wed, Jul 16, 2014 at 7:52 AM, Kv Gopalkrishnan < kvgopalkrishn...@gmail.com> wrote: > I want to expose a C++ friend functions to python using Python boost. > class Turtle{ > friend const PV& GetHeading(const Turtle& t); > friend const PV& GetLeft(const Turtle& t); > friend const P& GetPoint(const Turtle& t); > friend void SetPoint(Turtle& t, const P& p); > public: > > ... > > private: > PV h; > PV l; > > }; > > > Here I have wrapped the classes PV and P so no problem there. I tried to > wrap the friend functions like regular functions. Like > > BOOST_PYTHON_MODULE(TurtleWrapper) > { > class_<Turtle>("Turtle") > .def("GetHeading",&Turtle::GetHeading) > .def("GetLeft",&Turtle::GetLeft) > .add_property("h",&Turtle::GetHeading) > .add_property("l",&Turtle::GetLeft); > } > When i run the code i get error messages. > > error: ‘GetHeading’ is not a member of ‘Turtle’ > error: ‘GetLeft’ is not a member of ‘Turtle’ > > This error is seen for add_property and also .def. > So I assume that this is not the way to declare a friend function and the > documentation of python boost does not seem (or at least I did not see a > note about friend functions). Any help is much appreciated. > > > > Kind Regards > K.V. > > _______________________________________________ > Cplusplus-sig mailing list > Cplusplus-sig@python.org > https://mail.python.org/mailman/listinfo/cplusplus-sig >
_______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org https://mail.python.org/mailman/listinfo/cplusplus-sig