"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > क्या दृढ़ता से टाइप किए गए एनम को C++ में स्वचालित रूप से पूर्णांक में परिवर्तित किया जा सकता है?

क्या दृढ़ता से टाइप किए गए एनम को C++ में स्वचालित रूप से पूर्णांक में परिवर्तित किया जा सकता है?

2024-11-16 को प्रकाशित
ब्राउज़ करें:748

Can Strongly Typed Enums Be Automatically Converted to Integers in C  ?

पूर्णांक रूपांतरण के लिए सशक्त रूप से टाइप किए गए एनम को स्वचालित करना

सी में, एनम दो स्वादों में आते हैं: दृढ़ता से टाइप किए गए एनम और नियमित एनम। नियमित एनम को स्पष्ट रूप से पूर्णांक में परिवर्तित किया जा सकता है, जबकि दृढ़ता से टाइप किए गए एनम के लिए एक स्पष्ट कास्ट की आवश्यकता होती है। इससे सवाल उठता है: क्या स्पष्ट कास्ट का सहारा लिए बिना दृढ़ता से टाइप किए गए एनम को पूर्णांक में बदलने का कोई स्वचालित तरीका है?

इसका उत्तर नहीं है, और यह जानबूझकर है। पूर्णांकों में अंतर्निहित रूपांतरण को रोकने के लिए दृढ़ता से टाइप किए गए एनम डिज़ाइन किए गए हैं। अनिवार्य रूप से, कंपाइलर यह सुनिश्चित करता है कि आप एक प्रगणित मान से एक पूर्णांक में रूपांतरण को स्पष्ट रूप से स्वीकार करते हैं।

हालांकि, कास्ट में अंतर्निहित प्रकार को निर्दिष्ट करने से बचने के लिए एक समाधान है। टेम्प्लेट फ़ंक्शन का उपयोग करके, हम कलाकारों के प्रकार विनिर्देश को अलग कर सकते हैं।

template 
constexpr typename std::underlying_type::type to_underlying(E e) noexcept {
    return static_cast::type>(e);
}

इस टेम्पलेट फ़ंक्शन के साथ, रूपांतरण निम्नानुसार प्राप्त किया जा सकता है:

std::cout 

यह दृष्टिकोण कास्ट में स्पष्ट प्रकार के विनिर्देश को समाप्त करता है, दृढ़ता से टाइप किए गए एनम के लिए लागू स्पष्ट रूपांतरण के वांछित व्यवहार को बनाए रखते हुए रूपांतरण प्रक्रिया को सरल बनाता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3