Boost.Python多返回值参数

7
我有一个返回其参数的多个值的C++函数。
void Do_Something( double input1, double input2, double input3,
    double& output1, double& output2 )
{
    ...
    output1 = something;
    output2 = something;
}

我希望使用Boost.Python来包装这个函数。我已经想出了一个使用lambda的解决方案,但是因为我有很多函数在其参数中具有多个返回值,所以这种方法有点繁琐。

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来完成这个任务?

很遗憾,我认为没有更好的选择了。我能想到的唯一帮助你完成繁琐过程的方法是使用“cog”自动生成函数(假设这些函数都遵循相同的“模板”)。 - Fabio Menegazzo
1个回答

6
一种改进方法可能是:
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);
}

2
请补充您的问题,解释改进的位置。 - acostela

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接