उदाहरण:
typedef enum Color
{
RED,
GREEN,
BLUE
} Color;
void func(unsigned int& num)
{
num++;
}
int main()
{
Color clr = RED;
func(clr);
return 0;
}
इसे संकलित करने पर मुझे निम्न त्रुटि मिलती है:
<source>: In function 'int main()':
<source>:16:9: error: cannot bind non-const lvalue reference of type 'unsigned int&' to an rvalue of type 'unsigned int'
func(clr);
^~~
मुझे लगता है कि मैं जिस चर ( clr
) से गुजरता हूं func(unsigned int&)
वह एक अंतराल है। मैं इसका पता प्राप्त कर सकता हूं clr
और इसके लिए एक और मूल्य प्रदान कर सकता हूं । जब मैं इसे पास करने की कोशिश करता हूं तो यह एक प्रतिद्वंद्विता में क्यों बदल जाता है func(unsigned int&)
?
@ NathanOliver-ReinstateMonica मेरी मूल राय में, मुझे लगता
—
कोन
typedef enum
है कि एक मूल प्रकार नहीं है, और C ++ इसे unsigned int
वास्तव में एक प्रकार के रूप में माना जाएगा ।
इस मामले में GCC का एरर मैसेज सबॉप्टीमल है। क्लैंग मूल प्रकार को प्रिंट करके कम भ्रमित संदेश देगा
—
cpplearner
clr
।
@cpplearner yep, यही कारण है कि मुझे लगा कि C ++ में
—
कोएन
enum type
इलाज किया unsigned int
जाता है।
enum X
अपने स्वयं के प्रकार, से अलग हैint
enum
हैunsigned int
?