我有一个带有两个成员变量的C ++结构。一个是指向动态分配的内存的指针,该内存包含对象数组。第二个是整数,包含数组中对象的数量。
我有一个接受struct实例并填写两个成员变量的函数。
我可以将其包装得很好,并且可以从Python使用它,但不能在分配的数组上进行迭代。它是指向Python的不透明指针,我需要能够访问数组的元素。我该怎么做?
假定结构看起来像这样:
typedef struct {
int numElements;
Result *results;
} ResultList;
并且函数看起来像这样:
void populateResults(ResultList *);
因此,看起来这是使用%extend
关键字的示例。我在ResultsList
结构的声明之后添加了以下内容:
%extend ResultsList {
Result& __getitem__(int idx) { return $self->results[idx]; }
}
似乎有效。我现在可以遍历列表。我认为下一步是通过实现__next__
和__iter__
函数将其变成可迭代的对象。