使用Python Boost包装C ++ operator()

时间:2014-07-14 12:58:56

标签: python c++ boost

我有一个操作员

class A {
public:
    double operator()(double x)const{return eval(x);} 
    double eval(double x)const; 
};

如何使用Python Boost公开operator()

1 个答案:

答案 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
>>>