【发布时间】:2014-02-22 11:35:09
【问题描述】:
我正在尝试了解 Boost 功能。我想将 Python 函数传递给使用 Boost Python 包装的 C++ 模块。我按照here 给出的示例进行了修改,以接受接受输入参数并返回一些输出的函数。这是我的代码:
typedef double (op_t)(double);
boost::function<op_t> op;
double defaultOperator(double t) {
return t;
}
void setOperator(boost::python::object obj) {
op = obj;
}
double callOperator(double t) {
return op(t);
}
BOOST_PYTHON_MODULE(op1) {
op = &defaultOperator;
def("setOperator", &setOperator);
def("callOperator", &callOperator);
}
当我尝试编译它时,我的setOperator 函数中出现错误,显示cannot convert ‘boost::python::api::object’ to ‘double’ in return。如果我将 typedef 行替换为 typedef void (op_t)(double); 并将 callOperator 更改为返回 void,则该代码有效。这允许我传递可以对参数进行操作但不返回任何内容的 Python 函数。
我的代码有什么问题?我应该如何更正它以传递一个返回值的 Python 函数?
【问题讨论】:
标签: python c++ boost function-pointers