मेरे पास एक en + के साथ एक सी ++ कक्षा है, और मैं इसे boost::python
के साथ नकल करना चाहता था, ताकि मैं पाइथन में MyClass.value
लिख सकूं। boost::python::class_
में enum_
विधि नहीं है, और मैं कामकाज की तलाश में था।क्लास-स्कोप्ड एनम
मैं पहली बार की तरह
MyClass{ enum{value1,value2}; }; class_<MyClass>("MyClass").add_property("value1",&[](){return value1;}).staticmethod("value1");
lambdas के साथ करने की कोशिश की जो संकलक त्रुटि (
add_property
के लिएget_signature
में) देता है। मुझे पता है कि मैं प्रत्येक मूल्य के लिए गेटर विधि बना सकता हूं, लेकिन यह मेरे लिए बहुत अजीब लगता है (टाइपिंग-वार)।attr
का उपयोग करना:auto classObj=class_<MyClass>("MyClass"); classObj.attr("value1")=(int)value1; classObj.attr("value2")=(int)value2;
लेकिन यह उदाहरण के संदर्भ में लौटने
.def
और अन्य तरीकों की तरह श्रृंखलित नहीं किया जा सकता।
क्या कोई और अधिक सुरुचिपूर्ण समाधान है?
'MyClass' के बाहर आपको' MyClass :: value1' जैसे enum मानों का संदर्भ देना होगा, हालांकि मैं बूस्ट-पायथन सामग्री के साथ अपने तत्व से बाहर हूं। –
+1 इसे ठीक से स्वरूपित करने के लिए परेशान करने के लिए +1। –