我有一個C++類裏面有一個枚舉,我想用boost::python
來模仿,以便我可以在python中編寫MyClass.value
。 boost::python::class_
沒有enum_
方法,我正在尋找解決方法。類範圍的枚舉
予先用lambda表達式試圖像
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
等方法返回的參考實例。
有沒有更優雅的解決方案?
「MyClass」之外,您需要引用像MyClass :: value1這樣的枚舉值,儘管我用boost-python的東西超出了我的元素範圍。 –
+1用於擾亂格式正確。 –