Boost logo

Boost :

From: John Hunter (jdhunter_at_[hidden])
Date: 2001-08-16 13:54:53


I am using boost python to wrap a simple C++ class. The class has a
member function which takes two optional arguments

class Order {
  void print( ostream& os=cout , string prefix = "") const;
};

When I tried to use this w/ the python lib, I got a frightening array
or compiler errors (included below). Can the python lib handle
optional args?

But since I only really need the default behavior from python, I wrote
an Order member func wrapper

  void testprint() const { this->print(); };

which works great (amazing library! move over SWIG).

But there is one interesting problem I am still having. In the python
wrapper, if I write

    Order_class.def(&Order::testprint, "testprint");

all is well, but if I write

    Order_class.def(&Order::testprint, "print");

I get an error when I try to run my python test script:

video:~/c/trade/python> ./testOrder.py
  File "./testOrder.py", line 5
    o.print()
          ^
SyntaxError: invalid syntax
video:~/c/trade/python>

What's going on with this? Any other name besides 'print' works fine
here. Is this because the Order::print method (which I am not
exposing to python) is somehow clashing??

Thanks,
John Hunter

Compiler rant when I try to expose the print method which has optional args
    Order_class.def(&Order::print, "print");




Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk