我的头文件(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]
吗?