У меня есть класс C ++ Box, который я хочу обернуть, используя Python C ++ API.
Класс определяется как:
class Box {
public:
int id;
Box(double l, double b, double h);
double getVolume(void);
void setLength( double len );
private:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
};
В C-API у меня есть следующее объявление PyBox:
typedef struct
{
PyObject_HEAD
Box *bx;
} PyBox;
и следующая таблица членов:
static PyMemberDef pyBox_members[] = {
{"id", T_INT, offsetof(PyBox, bx->id), 0, "Box id"},
{NULL} /* Sentinel */
};
Однако, когда я пытаюсь скомпилировать модуль, я получаю следующее сообщение об ошибке:
error: cannot apply ‘offsetof’ to a non constant address
{"id", T_INT, offsetof(PyBox, bx->id), 0, "Box id"},
^~~~~~~~
Как указать правильное offsetof , чтобы элемент id соответствовал общедоступному атрибуту bx-> id ?
Спасибо!