小编Mar*_*rkS的帖子

在Boost Python中包装数组

我有一系列的C++结构,我试图用boost python包装.当这些结构包含数组时,我遇到了困难.我试图以最小的开销执行此操作,不幸的是我无法对结构本身进行任何修改.所以比如说我有

struct Foo
{
    int vals[3];
};
Run Code Online (Sandbox Code Playgroud)

我希望能够在python中访问它,如下所示:

f = Foo()
f.vals[0] = 10
print f.vals[0]
Run Code Online (Sandbox Code Playgroud)

现在我正在使用一系列get/set函数,但这些函数非常不优雅且与访问其他非数组成员不一致.这是我目前的解决方案:

int getVals (Foo f, int index) { return f.vals[index]; }
void setVals (Foo& f, int index, int value) { f.vals[index] = value; }

boost::python::class_< Foo > ( "Foo", init<>() )
    .def ( "getVals", &getVals )
    .def ( "setVals", &setVals );
Run Code Online (Sandbox Code Playgroud)

我可以使用get/set函数(因为在某些情况下我需要实现自定义get或set操作)但是我不确定如何合并[]运算符来访问数组的元素.在其他可以使用[]运算符访问的类中,我已经能够使用_ getitem __ setitem _这些已经完美地运行了,但是我不知道如果可能的话我会如何对类成员执行此操作.

c++ python boost boost-python

15
推荐指数
1
解决办法
7853
查看次数

标签 统计

boost ×1

boost-python ×1

c++ ×1

python ×1