#include <iostream>
struct a
{
enum LOCAL_A
{
A1,
A2
};
};
enum class b
{
B1,
B2
};
int foo(int input)
{
return input;
}
int main(void)
{
std::cout<<foo(a::A1)<<std::endl;
std::cout<<foo(static_cast<int>(b::B2))<<std::endl;
}
a::LOCAL_A
दृढ़ता से टाइप किया गया एनम प्राप्त करने की कोशिश कर रहा है, लेकिन इसमें एक छोटा अंतर है: सामान्य enums को पूर्णांक प्रकार में परिवर्तित किया जा सकता है, जबकि दृढ़ता से टाइप किए गए enums इसे बिना कलाकार के कर सकते हैं।int में दृढ़ता से टाइप किए गए enum को स्वचालित रूप से कैसे परिवर्तित करें?
तो, क्या दृढ़ता से टाइप किए गए enum मान को एक पूर्णांक प्रकार में एक कलाकार के बिना परिवर्तित करने का कोई तरीका है? यदि हां, तो कैसे?
खुर्शीद Normuradov से जवाब पर एक नज़र डालें। यह 'प्राकृतिक तरीका' आता है और 'सी ++ प्रोग्रामिंग भाषा (चौथा संस्करण)' में उतना ही इरादा है। यह 'स्वचालित तरीके' में नहीं आता है, और यह इसके बारे में अच्छा है। – PapaAtHome
@PapaAtHome मैं static_cast पर उस के लाभ को समझ नहीं पा रहा हूं। टाइपिंग या कोड क्लीननेस में ज्यादा बदलाव नहीं है। यहाँ प्राकृतिक तरीका क्या है? एक समारोह वापसी मूल्य? –
@ user2876962 मेरे लिए लाभ यह है कि यह स्वचालित या 'चुप' नहीं है क्योंकि Iammilind इसे रखता है। यह त्रुटियों को खोजने के लिए भिन्नता को रोकता है। आप अभी भी एक कलाकार कर सकते हैं लेकिन आपको इसके बारे में सोचने के लिए मजबूर होना पड़ता है। इस तरह आप जानते हैं कि आप क्या कर रहे हैं। मेरे लिए यह एक 'सुरक्षित कोडिंग' आदत का हिस्सा है। मैं पसंद करता हूं कि कोई रूपांतरण स्वचालित नहीं किया जाता है, यह एक मौका का एक sliver है कि यह एक त्रुटि पेश कर सकता है। यदि आप मुझसे पूछें तो इस श्रेणी में टाइप सिस्टम से संबंधित सी ++ 11 में काफी कुछ बदलाव आते हैं। – PapaAtHome