У меня есть класс С++ с enum внутри, и я хотел подражать этому с помощью boost::python, чтобы я мог писать MyClass.value в python. boost::python::class_ не имеет метода enum_, и я искал обходные пути.
-
Сначала я попытался использовать lambdas, например
MyClass{ enum{value1,value2}; }; class_<MyClass>("MyClass").add_property("value1",&[](){return value1;}).staticmethod("value1");который дает ошибку компилятора (в
get_signatureдляadd_property). Я знаю, что я мог бы создать метод getter для каждого из значений, но мне это кажется очень неудобным (типичным). -
Использование
attr:auto classObj=class_<MyClass>("MyClass"); classObj.attr("value1")=(int)value1; classObj.attr("value2")=(int)value2;но он не может быть привязан как
.defи другие методы, возвращающие ссылку на экземпляр.
Есть ли более элегантное решение?