boost python C ++函数调用另一个函数错误

时间:2016-07-24 08:26:16

标签: python c++ boost

我用C ++编写了一个函数并成功构建。

但是,如果我只是从C ++中的另一个函数调用它,那么构建失败。

double getlistvalue(boost::python::list l, int index)
{
    if (index = -1)
        return 0;
    else
        return boost::python::extract<double>(l[index]);

}

double xx(boost::python::list l, int index)
{
    return getlistvalue(l, index);
}

上面的代码,没有第二个函数,它构建。

这是错误信息: error info

请分享如何解决它的想法。非常感谢。

1 个答案:

答案 0 :(得分:1)

您要按值传递列表,这需要复制构造函数。错误消息告诉您没有为列表提供复制构造函数。因此,解决方案是通过引用传递列表:

%timeit df.apply(" ".join, axis=1)
10 loops, best of 3: 112 ms per loop

%timeit df[0].str.cat(df.ix[:, 1:].T.values, sep=' ')
100 loops, best of 3: 4.48 ms per loop

(和其他功能一样)。

通常,按值传递复杂对象(如列表)是一个坏主意,因为即使提供了复制构造函数,实际制作副本也会非常昂贵。