c++ - Declaring a range for data members of a class -


मुझे यह कोर्स क्लास लिखना है, जिसमें कक्ष , day_of_week < / कोड> और इतने पर।

पाठ्यक्रम के वैध होने के लिए उनमें से प्रत्येक को विशिष्ट श्रेणी में घोषित किया जाना चाहिए। उदाहरण के लिए, day_of_week चाहिए 1 और 6 के बीच एक पूर्णांक हो, और कमरे 1 और 59 9 के बीच एक पूर्णांक होना चाहिए। मेरा प्रश्न यह है कि मेरे कन्स्ट्रक्टर को लिखने का एक तरीका है ताकि जब मैं आरंभ करे अमान्य डेटा वाला कोई ऑब्जेक्ट यह संकलित नहीं करेगा।

इसे एक और परिप्रेक्ष्य में डाल देना, मेरे डेटा सदस्यों की श्रेणी को कंस्ट्रक्टर या क्लास घोषणापत्र में घोषित करने का एक तरीका है।

> लंबे समय तक किसी भी मदद के स्वागत के लिए क्षमा स्वागत है।

नहीं, सी ++ एक तरह से नहीं आती रेंज की जांच कर रहे हैं, फिर भी आप अपने खुद के नंबर क्लास को लागू कर सकते हैं जो असाइनमेंट और अंकगणित ऑपरेटरों को ओवरलोड करता है:

  #include & lt; cassert & gt ; टेम्पलेट & lt; int कम, पूर्णांक ऊपरी & gt; कक्षा श्रेणीबद्ध संख्या {सार्वजनिक: रंगीन संख्या (पूर्णांक मान): मूल्य (मान) {परीक्षण (); } RangedNumber (const rangedNumber & r): मान (r.value) {} RangedNumber & amp; ऑपरेटर + = (इंट आई) {value + = i; परीक्षण(); वापसी * ​​यह; } RangedNumber ऑपरेटर + (int i) const {RangedNumber r (* this); रिटर्न आर + = i; } RangedNumber & amp; ऑपरेटर - = (इंट आई) {value - = i; परीक्षण(); वापसी * ​​यह; } रंगीन नंबर ऑपरेटर- (इंट आई) कॉन्स्ट (रंगीन संख्या आर (* यह); वापसी आर - = i; } Int get () const {return value; } निजी: इंट मान; शून्य परीक्षण () (यदि (मान & lt; lower || value & gt; = ऊपरी) std :: out_of_range; }};  

Comments

Popular posts from this blog

c# - Highlight all words containing a letter in a richtextbox -

Admob interstitials not clickable on Nexus 5 (Android 4.4.2) -

java - MigLayout - selective component fill -