Swig:将成员变量(指向值的指针)转换为 python 列表
Posted
技术标签:
【中文标题】Swig:将成员变量(指向值的指针)转换为 python 列表【英文标题】:Swig: convert member variable (pointer to value) to python list 【发布时间】:2019-10-07 19:03:07 【问题描述】:我有一个带有两个成员变量的 C++ 结构。一个是指向动态分配内存的指针,其中包含对象数组。第二个是一个整数,表示数组中的对象数。
我有一个函数,它接受结构的一个实例并填写两个成员变量。
我可以很好地包装它并从 Python 中使用它,但无法遍历分配的数组。它是指向 Python 的不透明指针,我需要能够访问数组的元素。我该怎么做?
假设结构如下所示:
typedef struct
int numElements;
Result *results;
ResultList;
函数如下所示:
void populateResults(ResultList *);
【问题讨论】:
【参考方案1】:所以,看起来这是一个使用 %extend
关键字的示例。我在声明ResultsList
结构后添加了以下内容:
%extend ResultsList
Result& __getitem__(int idx) return $self->results[idx];
它似乎正在工作。我现在可以遍历列表。我认为下一步是通过实现__next__
和__iter__
函数将它变成一个可迭代对象。
【讨论】:
以上是关于Swig:将成员变量(指向值的指针)转换为 python 列表的主要内容,如果未能解决你的问题,请参考以下文章