içimde bir enum olan bir C++ sınıf var ve ben Python MyClass.value
yazabilir, böylece o boost::python
ile taklit eden istedi. boost::python::class_
bir enum_
yöntemi yoktur ve ben geçici çözümler arıyordu.Sınıf-kapsamlı enum
İlk (
add_property
içinget_signature
olarak) derleyici hata verirMyClass{ enum{value1,value2}; }; class_<MyClass>("MyClass").add_property("value1",&[](){return value1;}).staticmethod("value1");
gibi lambda çalışmıştır. Ben değerlerin her biri için alıcı yöntemi oluşturabilirsiniz biliyorum, ama bu (yazarak-bilge) bana çok garip görünüyor.
attr
kullanılması:
auto classObj=class_<MyClass>("MyClass"); classObj.attr("value1")=(int)value1; classObj.attr("value2")=(int)value2;
ancak örneğine referans geri
.def
ve diğer yöntemler gibi zincirli edilemez.
Daha şık bir çözüm var mı?
dışında 'ben boost-piton şeylerle zaman unsuru olsam da,' Sınıfım :: değer1 gibi enum değerleri referans gerekir MyClass'. Düzgün biçimlendirmek için rahatsız etmek için –
+1. –