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

Jim Bosch talljimbo at gmail.com
Thu Jul 17 14:12:17 CEST 2014


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 <
kvgopalkrishnan1 at 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 at python.org
> https://mail.python.org/mailman/listinfo/cplusplus-sig
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/cplusplus-sig/attachments/20140717/b3e02768/attachment.html>


More information about the Cplusplus-sig mailing list