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

Scott A. Smith ssmith at magnet.fsu.edu
Thu Dec 5 04:16:16 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);
>    ...
> }

Yep, this compiles just fine, but that is not the problem. 
Unfortunately, I cannot call it from Python without errors.
Here is what happens when I added the code to the hello example
(Cygwin/GCC BPV2):

$ python
Python 2.2.2 (#1, Nov 15 2002, 07:49:04)
[GCC 2.95.3-5 (cygwin special)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from hello import *
>>> X = Num()
>>> print X.dims()
5
>>> print X.getDims()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: bad argument type for built-in operation
>>> print Num().getDims()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: bad argument type for built-in operation
>>> print Num.getDims()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: unbound method Boost.Python.function object must
be called with Num instance as first argument (got nothing instead)

As you can see, the non-static method Num.dims() is fine, but
none of my attempts works for the static method. I think the
last invocation is supposed to work.

In BP V1 I could use Num.getDims(), but nothing works now?

Thanks, Scott




More information about the Cplusplus-sig mailing list