Как создать экземпляр класса Python в C / C ++ API? - PullRequest
0 голосов
/ 16 апреля 2019

Я хочу создать экземпляр 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 ++?

Спасибо!

...