[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