[C++-sig] C++ Operators and Constructers

Stefan Wolf wolfs at in.tum.de
Mon May 10 20:39:16 CEST 2004


Hi

I've got the following problem:

I'm trying to create a python interface to GiNaC (www.ginac.de).
Mainly I'm interested in the ex class. 

In GiNaC there exists the operators:
const ex operator* (ex& lh,ex& rh);
(same with +,- and /).

Porting this to python isn't too difficult when dealing only with ex-objects. But if you want, for example, multiply to symbols
(symbol is another class dervived from basic, and ex has a constructor ex(const basic& other) ) I get the error: 

TypeError: unsupported operand type(s) for * or mul(): 'symbol' and 'symbol'

Another thing is, if I call for example the subs-method from an ex-instance 
(
GiNaC::ex ex_subs(GiNaC::ex &express, GiNaC::symbol & x, GiNaC::ex & y)
)
(a wrapper programmed by myself), I get:

Boost.Python.ArgumentError: Python argument types in
    ex.subs(ex, symbol, symbol)
did not match C++ signature:
    subs(GiNaC::ex {lvalue}, GiNaC::symbol {lvalue}, GiNaC::ex {lvalue})

Which is correct. But I used a 
implicitly_convertible<GiNaC::symbol,GiNaC::ex>();
in my .cpp file, so it should convert it automagically, should't it?

Now, I could write wrapper-functions for all possible combination of types, but there should be a shorter way, should't it?


-- 
  Stefan Wolf 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/cplusplus-sig/attachments/20040510/61e157cc/attachment.pgp>


More information about the Cplusplus-sig mailing list