我正在尝试使用Boost Python导出一个类,如下所示:
struct bool_array
{
bool_array(bool constructor_bool[7])
{
for(unsigned int i=0; i < 7; i++)
bools[i] = constructor_bool[i];
}
bool bools[7];
};
我想使用以下Boost代码公开构造函数:
class_<bool_array>("bool_array", init<bool*>())
.def_readwrite("bools", &bool_array::bools)
;
问题是我收到此编译器错误:
error C2440: '=' : cannot convert from 'const bool [7]' to 'bool [7]'
我也试过
init<bool[7]>
和
init<bool[]>
无济于事。
我确定我遗漏了一些明显的东西,但我一直无法弄清楚我需要做些什么才能揭露这个课程。
由于
答案 0 :(得分:2)
虽然我在讨论这个问题,但我了解到boost-python不支持直接暴露C风格的数组。相反,我选择使用矢量:
struct bool_array
{
bool_array(std::vector<bool> constructor_bool)
{
for(unsigned int i=0; i < 7; i++)
bools.push_back(constructor_bool[i]);
}
std::vector<bool> bools;
};
使用以下boost-python包装器:
typedef std::vector<bool> BoolVector;
bp::class_<BoolVector>("BoolVector")
.def(bp::vector_indexing_suite<BoolVector>())
;
bp::class_<bool_array>("bool_array", bp::init<std::vector<bool>>())
.def_readwrite("bools", &bool_array::bools)
;