我有一个操作员
class A {
public:
double operator()(double x)const{return eval(x);}
double eval(double x)const;
};
如何使用Python Boost公开operator()
?
答案 0 :(得分:1)
#include <boost/python.hpp>
using namespace boost::python;
class A
{
public:
double operator()( double x ) const { return eval(x); }
double eval( double x ) const { return x; }
};
BOOST_PYTHON_MODULE(my_module)
{
class_<A>("my_module")
.def("__call__", &A::operator() )
;
}
现在在python shell中:
Python 2.7.6 (default, Mar 22 2014, 22:59:38)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import my_module
>>> x = my_module.my_module()
>>> x(5)
5.0
>>>