[C++-sig] Can't use make_function to wrap base class method?
Alex Mohr
amohr at pixar.com
Thu Dec 15 19:58:37 CET 2005
> You either need to wrap Base or you need to
>
> .def(
> "method",
> make_function(
> (int (Derived::*)()) &Derived::method
> )
> )
>
> class_ has the information about the derived class (it's a template
> argument), so it can do the cast automagically. However,
> make_function is just a function, so it can't do anything fancy with
> Derived. The function pointer's type is
>
> int (Base::*)()
>
> even when you get it via &Derived::method.
Ahh, that makes perfect sense. Thanks! Does it make sense to add
something like:
make_method<Derived>(&Derived::method)
Which would just call make_function with the appropriate cast? Perhaps
I could give it a shot if it seems like a good idea. Or perhaps it
would be better to have a form of make_function like this?
Alex
More information about the Cplusplus-sig
mailing list