C/Python API で定義された構造体を C++ クラスで使用しようとしています。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
エラーなしでコンパイルされることを確認することで、これが問題の原因であることを確認しました。ただし、これを修正する方法がわかりません。ハードコーディングして自分で再定義しないことをお勧めします。これが十分に明確であることを願っています。リクエストに応じて詳細を提供できます。ありがとう。