Я хочу создать экземпляр PyTypeObject
в своем коде C ++ Python C-api: я использовал Создать объект, используя в качестве основы Python C API .
У меня естьопределил пользовательский тип / класс:
typedef struct {
PyObject_HEAD
// Other stuff...
} pyfoo;
static PyTypeObject pyfoo_T = {
PyObject_HEAD_INIT(NULL)
// ...
pyfoo_new,
};
Я хочу создать экземпляр объекта типа pyfoo в моем коде C ++.Глядя на вышеупомянутую ссылку, я делаю это, вызывая:
pyfoo *result = PyObject_CallFunction((PyObject *)&pyfoo_T, argList);
Однако, когда я использую компилятор C ++ для компиляции модуля, я получаю следующую ошибку:
error: cannot convert ‘PyObject*’ {aka ‘_object*’} to ‘pyfoo*’ in initialization.
Если яиспользуйте компилятор C, он выдает предупреждение:
warning: initialization of ‘PyObject * (*)(PyObject *, PyObject *)’ {aka ‘struct _object * (*)(struct _object *, struct _object *)’} from incompatible pointer type ‘PyObject * (*)(PyTypeObject *, PyObject *)’ {aka ‘struct _object * (*)(struct _typeobject *, struct _object *)’} [-Wincompatible-pointer-types]
Как правильно создать экземпляр типа в коде C / C ++?
Спасибо!