我想使用boost-python公开两个不同的类,但是第二个类的构造函数将第一个类的构造函数和数组作为参数,但我不知道该怎么做。

这是类的定义:

class INT96{
public:
    uint64_t value[3];

    INT96(){};
    INT96(uint64_t x0, uint64_t x1, uint64_t x2);
    ...
};

template <unsigned k>
class Xi_CW{
    protected:
        INT96 A[k];

    public:
        Xi_CW(INT96 (&A)[k]);
        ...
};


我尝试使用boost-python公开它们:

using namespace boost::python;
typedef Xi_CW<4> Xi_CW4;

BOOST_PYTHON_MODULE(xis)
{
    class_<INT96>("INT96", init<double,double,double>())
        [...]
    ;
    class_<Xi_CW4>("Xi_CW4", init<INT96[4]>())
        [...]
    ;
}


这导致“未知的转换错误”。我尝试了其他几种可能性,但到目前为止还没有运气...

知道该怎么办吗?
谢谢

最佳答案

我相信您可以为您的构造函数使用boost :: python :: list,以接收一个int96数组,然后根据需要将其转换为常规c ++数组。

这是我发现的将python可迭代对象转换为c ++向量的示例:https://stackoverflow.com/a/19092051/996197

关于c++ - 使用其他类的数组作为参数公开构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21409164/

10-09 06:35