[C++-sig] Static, again...

Scott A. Smith ssmith at magnet.fsu.edu
Thu Dec 5 13:53:27 CET 2002


> >David wrote:
> >
> >>A static member function is just a regular function; you can add it at
> >>module scope:
> >>
> >>BOOST_PYTHON_MODULE_INIT(numTest)
> >>{
> >>   def("getDims", &Num::getDims);
> >>   ...
> >>}

Nicodemus wrote:

> You are exposing a function, not a member function, so you should call 
> it like this from python:
> 
>  >>> print getDims()
> 
> If that bothers you, you can:
> 
> 1) Export it as "Num_getDims" instead of "getDims". It might be 
> acceptable.
> 
> 
> 2) Create a static function on the python side, like this:
> 
>  >>> from hello import *
>  >>> Num.getDims = staticmethod(getDims)
>  >>> print Num.getDims()
> 
> 
> 3) Wait for David to implement the new facility to export static 
> functions, which he said he would do as soon as he could, IIRC.

OK, I see now that it is the difference between adding

.def("getDims", &Num::getDims)

within the class Num and making it a regular function using

def("getDims", &Num::getDims);

I have to read David's responses more carefully. The solution
isn't optimal, but I can live with it until it is part of BP.
I am many many steps behind the cutting edge in BP anyway.

Thanks Dave & Nicodemus,
Scott





More information about the Cplusplus-sig mailing list