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 列表的主要内容,如果未能解决你的问题,请参考以下文章

swig char ** 作为指向 char * 的指针

将指向成员的 C++ 指针转换为 C#

正确转换二维数组的成员变量

Swig,将 c 指针转换为 float[]

存储指向成员函数的指针不适用于 clang++

将成员函数指针转换为 FreePascal 中的函数指针