SWIG C ++:结构中的访问指针

时间:2015-05-26 13:43:36

标签: python c++ swig

我的头文件(myheader.h)中定义了如下所示的结构

typedef struct
{
    MyMemberStruct* member;
    int32_t n_members;
} MyMember;

MyMember* MyMemberCreate(...)

SWIG接口文件

%module members

%{
#define SWIG_FILE_WITH_INIT
#include "myheader.h"
%}

%include "myheader.h"

在功能MyMemberCreate()中,n_members成员列表已创建并存储在member中。

在Python中,我会访问这些成员,如:

pyMember = members.member[0]

但这会产生以下错误:

  

'MyMemberStruct'对象不支持索引

我了解到我可以将以下内容添加到接口文件

%extend MyMember {
    MyMemberStruct __getitem__(int32_t index) {
        if (index < $self->n_members) {
            return $self->member[index];
        }
    }
}

然后从Python我可以访问成员

pyMember = members[0]

我应该在MyMemberStruct

中给我第一个索引

有人能指出我如何实现第一种方法的正确方向,即pyMember = members.member[0]吗?

0 个答案:

没有答案