मैं सिर्फ एक ही मुद्दा था। मुझे किसी ऑब्जेक्ट को एक XML फ़ाइल में पढ़ने के लिए प्रारंभ करना है और निश्चित रूप से, मेरे पास उस फ़ाइल के साथ क्या हो सकता है पर कोई नियंत्रण नहीं है।
enum status_t { NOT_STARTED, STARTED, DONE };
MyObject::MyObject(int id, status_t status) : m_id(id), m_status(status){}
तो जब Xml मैं इसे कास्ट करने के लिए है पार्स करने:
निर्माता तर्क के रूप में एक enum है। मैंने फिर कन्स्ट्रक्टर में कलाकारों को संभालने के लिए पसंद किया ताकि अन्य वर्गों को यह पता न हो कि वैध मानदंड कौन सा है।
MyObject::MyObject(int id, int status) : m_id(id){
m_status = status_t(status);
}
लेकिन कोई रास्ता नहीं यकीन है कि एक्सएमएल से आ रही मूल्य सही रेंज में हो जाएगा किया जाना है।
MyObject::MyObject(int id, int status) : m_id(id){
switch(status){
case NOT_STARTED:
case STARTED:
case DONE:
m_status=status_t(status);
break;
default:
m_status=NOT_STARTED;
break;
}
}
यह एक कार्यान्वयन विकल्प, गैर सुसंगत डेटा के मामले में एक डिफ़ॉल्ट मान के लिए मजबूर करने के लिए है:
यहाँ समाधान मैं के साथ आया है। कोई अपवाद फेंकना पसंद कर सकता है, मेरे मामले में यह इस तरह से करेगा।
संभावित डुप्लिकेट: [सी # में एनम को कास्ट करें] (http: // stackoverflow।com/प्रश्न/29482/डाली-पूर्णांक करने वाली enum-इन-सी तेज) – danihp