python - 用 Python Boost 包装 C++ operator()

标签 python c++ boost

我有一个接线员

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

如何使用 Python Boost 公开 operator()

最佳答案

#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
>>> 

关于python - 用 Python Boost 包装 C++ operator(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24737082/

相关文章:

python - Django REST 序列化单个模型实例

python - 为什么我收到 SyntaxError : (unicode error) 'utf-8' codec can't decode byte 0x96 in position 0: invalid start byte

c++ - 是否可以像为另一种类型重载成员访问运算符那样解析静态成员?

c++ - 如何在 Qt Creator 中使用英特尔 C++ 编译器

C++ 代码跳过 if 语句。不允许用户输入

c++ - 使用 Boost::thread 类的线程池实现

c++ - 标准 C++ 和 MFC 包装器

python - 如何将 pandas 列分配给其他列,或者如果为 nan 则为默认值?

python - 导入和使用 keras/tensorflow 时出现 ModuleNotFoundError

c++ - boost asio 的链接器问题