-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hans Roessler schrieb:
Hello Hans, in my experience .def(self+other) often didn't quite do what I expected. You could try something like that: int int__add__A_B(const A &lhs, const B &rhs){ return operator+(A,B); } .def("__add__", &int__add__A_B) i.e. first define a non-overloaded function int_add__A_B and then bind it to __add__ (which is the Python operator+ function). regards, Sebastian > Hello, > how can I wrap the following overloaded operator+ using boost.python? > The code as is fails with >> ... >> pytest.cpp: In function ‘void init_module_pytest()’: >> pytest.cpp:19: error: expected primary-expression before ‘(’ token >> ... > If I try ".def(self+B())" instead of ".def(self+other<B>())", the error is >> ... >> pytest.cpp: In function ‘void init_module_pytest()’: >> pytest.cpp:17: error: no matching function for call to ‘B::B()’ >> ... > > best wishes > Hans > > > pytest.cpp: > > #include <boost/python.hpp> > using namespace boost::python; > > class A{ > public: > }; > class B{ > public: > B(int i){}; > }; > > int operator+(const A& a,const B& b){return 42;}; > > BOOST_PYTHON_MODULE(pytest) > { > class_<A>("A") > .def(self+other<B>()) //.def(self+B()) //line 17 > ; > class_<B,boost::noncopyable>("B",init<int>) //line 19 > ; > } > > > > _______________________________________________ > Cplusplus-sig mailing list > Cplusplus-sig@python.org > http://mail.python.org/mailman/listinfo/cplusplus-sig -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.4-svn0 (GNU/Linux) Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org iD8DBQFKDS+f9PBA5IG0h0ARAnfLAJ9rGkoAUY9c2FUgJTIcWx+AFN1akACdHg7s MAVRLstiqwAtaf9RmDsLXko= =b8b/ -----END PGP SIGNATURE----- _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig