У меня есть класс C ++ (Scenario
), завернутый в тип Python:
struct PyScenario {
PyObject_HEAD
Scenario scen;
};
Я хотел бы представить некоторые из закрытых членов Scenario
сценариям Python - без использования явных функций получения / установки:
static PyMemberDef scenarioMembers[] {
{
(char *)"a",
T_DOUBLE, offsetof(PyScenario, scen._a),
"The a"
},
{
(char *)"b",
T_INT, offsetof(PyScenario, scen._b),
"The b"
},
NULL
};
К сожалению, когда я компилирую вышеупомянутое, я получаю ошибку как: 'double Scenario::_a' is private within this context
.
Я не хочу обнародовать _a
и _b
, поэтому я попытался объявить PyMemberDef
a friend
из Scenario
:
class Scenario {
#ifdef PY_MAJOR_VERSION
friend struct PyMemberDef;
#endif
private:
double _a;
int _b;
....
};
К сожалению, это не помогло ... Какой правильный путь?