我想使用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/