Boost.Python多个返回参数

时间:2015-07-08 14:05:36

标签: python c++ boost

我有一个C ++函数,它从参数中返回多个值。

void Do_Something( double input1, double input2, double input3,
    double& output1, double& output2 )
{
    ...
    output1 = something;
    output2 = something;
}

我想使用Boost.Python包装此函数。我想出了一个使用lambdas的解决方案,但由于我有很多函数在参数中有多个返回值,所以它很乏味。

BOOST_PYTHON_MODULE( mymodule )
{
    using boost::python;
    def( "Do_Something", +[]( double input1, double input2, double input3 )
    {
        double output1;
        double output2;
        Do_Something( input1, input2, input3, output1, output2 );
        return make_tuple( output1, output2 );
    });
}

使用Boost.Python有没有更好的\自动方式来完成这个?

1 个答案:

答案 0 :(得分:2)

改进可能是:

boost::python::tuple Do_Something(double input1, double input2,
                                  double input3) {
    // Do something
    ...
    return boost::python::make_tuple(output1, output2);
}

BOOST_PYTHON_MODULE(mymodule) {
    def("Do_Something", Do_Something);
}