我正在尝试在 C++ 类中使用 C/Python API 中定义的结构。具体来说,我正在尝试为PyMethodDef
and定义一个结构数组PyMemberDef
(文档在此处):
对于PyMethodDef
,我可以在类头中定义一个静态数组并在实现文件中声明它。但是,做同样的事情PyMemberDef
会给我以下错误:
error: elements of array 'PyMemberDef members_ []' have incomplete type
error: storage size of 'members_' isn't known.
我想我可以看到为什么PyMethodDef
有效但PyMemberDef
无效。在 Python 源代码中,PyMethodDef
定义如下:
struct PyMethodDef {
...
...
};
typedef struct PyMethodDef PyMethodDef;
而PyMemberDef
定义如下:
typedef struct PyMemberDef {
...
...
} PyMemberDef;
我通过在我的代码中定义PyMemberDef
方式PyMethodDef
并确认它编译没有错误来确认这是问题的原因。但是,我不知道如何纠正这一点。我不想自己硬编码和重新定义它。希望这足够清楚。我可以根据要求提供更多细节。谢谢。