[C++-sig] Re: Boost.Python : Byref parameters - no problems with static/non-static overloading
David Abrahams
dave at boost-consulting.com
Mon Sep 29 20:05:07 CEST 2003
Joel Gerard <llywelyn.geo at yahoo.com> writes:
> Thanks for the advice. There are a few things I'm still vague on though. I've been overloading
> static, and non-static members without apparent problems, but I'm now starting to be suspicious.
>
> For instance, I have:
>
> Vector (Vector::*CreateCross1)(const Vector&) const = &Vector::CreateCross ;
> Vector (*CreateCross2)(const Vector&, const Vector&) = &Vector::CreateCross;
>
> .def("CreateCross",CreateCross1)
> .def("CreateCross",CreateCross2)
>
> The one I call as a bound method, and the other unbound, i.e.:
>
> Vector2 = Vector1.CreateCross(Vector3)
> Vector2 = module.Vector.CreateCross(Vector1,Vector3)
>
> Is something going on here that I'm not seeing. They work ok apparently.
Both are calling CreateCross2.
> Regarding the vector problem. I cannot modify the original C++ code. I want to keep Normalize as
> an unbound method in Vector since I might have name collisions if I
> put them at the module level.
What collisions? There's overloading at the module level too, you
know.
> I tried .def("Yahoo",Normalize3) but it too gave me a type
> error. What is Boost trying to do?
I have no idea; post a reproducible test case.
Maybe you forgot to make it static?
> The function pointer is poiting to the correct function.
>
> Furthermore, don't you have to do something different than just a
> plain .def since the arguments to Normalize are references?
No.
> Does Boost automatically detect this?
It does detect that they are references.
> How does it deal with something like:
>
> Add(int x, int y, int &result)
>
> So when you do >>>Add(x,y,result) in python, what happens?
argument error, but that's because Python ints are immutable. Classes
don't play by the same rules.
> I think I'm missing something fundamental here... :(
>
> Thanks for your help.
> Joel
Sure thing.
--
Dave Abrahams
Boost Consulting
www.boost-consulting.com
More information about the Cplusplus-sig
mailing list