[C++-sig] operator+(A, B) without B::B() default constructor in boost.python

Hans Roessler hansroessler at yahoo.de
Thu May 14 15:15:30 CEST 2009


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
    ;
}


      


More information about the Cplusplus-sig mailing list