[C++-sig] Exposing Friend Functions in C++ Python Boost

Kv Gopalkrishnan kvgopalkrishnan1 at gmail.com
Wed Jul 16 13:52:17 CEST 2014


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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/cplusplus-sig/attachments/20140716/6045293c/attachment.html>


More information about the Cplusplus-sig mailing list