Tôi có một lớp C++ với một enum bên trong, và tôi muốn bắt chước với boost::python
, để tôi có thể viết MyClass.value
trong python. boost::python::class_
không có phương thức enum_
và tôi đang tìm cách giải quyết.Class-scoped enum
đầu tiên tôi thử với lambdas như
MyClass{ enum{value1,value2}; }; class_<MyClass>("MyClass").add_property("value1",&[](){return value1;}).staticmethod("value1");
mang đến cho lỗi biên dịch (trong
get_signature
choadd_property
). Tôi biết tôi có thể tạo ra phương pháp getter cho mỗi giá trị, nhưng điều đó có vẻ rất khó xử với tôi (đánh máy khôn ngoan).Sử dụng
attr
:auto classObj=class_<MyClass>("MyClass"); classObj.attr("value1")=(int)value1; classObj.attr("value2")=(int)value2;
nhưng nó không thể bị xiềng xích như
.def
và các phương pháp trở về tham chiếu đến các ví dụ.
Có giải pháp thanh lịch hơn không?
Bên ngoài 'MyClass', bạn sẽ cần phải tham chiếu các giá trị enum như' MyClass :: value1', mặc dù tôi không nằm trong phần tử của tôi với công cụ tăng cường python. –
+1 vì làm phiền định dạng này đúng cách. –