खैर, day * 3
के बारे में अपने प्रश्न का उत्तर है: हाँ, आप यह कर सकते हैं। इसके लिए आपको किसी ऑपरेटर ओवरलोडिंग की आवश्यकता नहीं है। और परिणाम 6
होगा। हालांकि, यह day
को int
प्रकार में निरंतर करके int
प्रकार के गुणा करने और int
के परिणाम देने के परिणामस्वरूप काम करेगा, यानी है। जो अगला प्रश्न उठाता है: क्या आप int
होने के साथ ठीक हैं?बाद में उस 6
के साथ क्या करने की योजना बना रहे हैं? यदि आपके उद्देश्य के लिए int
ठीक है, तो आपको कुछ भी करने की आवश्यकता नहीं है।
हालांकि, यह संभव है कि आप से field_type
प्रकार का परिणाम प्राप्त करना चाहते हैं। आप देखते हैं, सी ++ int
प्रकार में एनम प्रकारों के लिए स्पष्ट रूप से परिवर्तनीय नहीं है। तो यह संकलन होगा और काम
int product = day * 3;
लेकिन यह नहीं होगा
field_type product = day * 3; // ERROR
आप एक स्पष्ट डाली
field_type product = (field_type) (day * 3);
का उपयोग करके संकलित करने के लिए बाद के लिए मजबूर कर सकते हैं या आप ऑपरेटर के साथ खेल शुरू कर सकते हैं ओवरलोडिंग,
field_type operator *(field_type lhs, int rhs)
{
return (field_type) ((int) lhs * rhs)
}
नोट, कि अधिभारित ऑपरेटर का कार्यान्वयन अभी भी एक कलाकार पर निर्भर करता है, इसलिए यह समर्पित प्रोग्रामरों में बदसूरत जानवरों को घेरकर, आपके प्रोग्राम के "मुख्य" कोड को क्लीनर बनाने का एक तरीका है (इसमें कुछ भी गलत नहीं है)।
एक पैडेंटिक साइड नोट के रूप में, मैं यह जोड़ना चाहता हूं कि पूर्णांक अंकगणितीय परिचालन के परिणामों को एक enum प्रकार में निचोड़ने की कोशिश करने में कुछ औपचारिक खतरे हैं (यदि आप यही चाहते हैं; शायद आप नहीं करते प्रतीत होता है कि आप इसके बारे में कोई विवरण नहीं दे रहे हैं, इसके परिणामस्वरूप आप किसी अन्य प्रकार foo
का उपयोग कर रहे हैं)। मानों की श्रेणी एक enum ऑब्जेक्ट का प्रतिनिधित्व कर सकते हैं [मोटे तौर पर] 2^N-1
के अगले उच्चतम (परिमाण) द्वारा संख्याबद्ध गोम के अधिकतम (परिमाण) द्वारा निर्धारित किया गया है। आपके मामले में उच्चतम मूल्य day
2 के बराबर है, जिसका अर्थ है कि आपकी enum को 3
तक मूल्यों का प्रतिनिधित्व करने की गारंटी है। यदि आप 6
को अपने enum प्रकार में कनवर्ट करने का प्रयास करते हैं तो परिणाम अनिर्दिष्ट है (हालांकि यह आमतौर पर अभ्यास में "अपेक्षित" काम करेगा)।
वह 'foo' प्रकार क्या है? – AnT
foo कुछ जटिल डेटा संरचना है उदाहरण के लिए 'struct foo {field_type प्रकार, int मान; } ' – Artyom