how to access a specific scope in c++? -


<पूर्व> #include & lt; iostream & gt; नेमस्पेस एसटीडी का उपयोग करना; Int x = 24; Int main () {int x = 0; {Int x = 5; :: एक्स = एक्स + 2; } Cout & lt; & lt; :: x & lt; & lt; endl; // पहले cout & lt; & lt; x & lt; & lt; endl; // दूसरा वापसी 0; }

इस सरल उदाहरण में मैं कोड ब्लॉक का उपयोग कर रहा हूं और मुझे पता है कि स्कोप रेज़ोल्यूशन ऑपरेटर का उपयोग करके वैश्विक चर संशोधित कर सकते हैं। और मैं इस उदाहरण में ग्लोबल वैरिएबल को संशोधित करता हूं लेकिन मुझे आश्चर्य है कि मुख्य कार्य (जैसे स्कोप रेज़ोल्यूशन ऑपरेटर) की तरह विशिष्ट गुंजाइश में वेरिएबल को संशोधित करने का कोई तरीका नहीं है। इसका अर्थ है कि इस उदाहरण में मुझे पहले आउटपुट 24 और अगले एक 7 मेरे अंग्रेजी के लिए खेद है कि मुझे सवाल समझने की आशा है

सी ++ के स्क्रॉपिंग नियम पाठ और AFAIK हैं ऐसा नहीं कर सकते, क्योंकि आप नामस्थानों को कार्य के अंदर नहीं डाल सकते। लेकिन एक अनोखे नाम के साथ एक संदर्भ शुरू करने से आपको एक ऐसे बाध्यता के रूप में मदद मिल सकती है, जैसे आप इस तरह से बाइंड में पाएंगे:

  #include & lt; iostream & gt; नेमस्पेस एसटीडी का उपयोग करना; Int x = 24; Int main () {int x = 0; इंट एंड amp; Main_outer_x = x; {Int x = 5; Main_outer_x = x + 2; } Cout & lt; & lt; :: एक्स एंड एलटी; & lt; endl; // पहले कॉट & lt; & lt; एक्स एंड एलटी; & lt; endl; // दूसरा वापसी 0; }   

यह आपको देता है:

  24 7   

यह आपके जेनरेटेड में और अधिक मेमोरी नहीं लेना चाहिए कोड, और आपको बाह्य नाम अछूता रखने की सुविधा देता है फिर भी, भ्रामक और त्रुटि प्रवण होने की संभावना है अगर आप फ़ंक्शन के भीतर उद्देश्य से एक नाम टकराव कर रहे हैं। यह अमूर्त कोड है, इसलिए इसकी आलोचना करना कठिन है, लेकिन इस तरह के पैटर्न के साथ सबसे ठोस कोड संभवतः किसी अन्य तरीके से किया जाना चाहिए।

Comments

Popular posts from this blog

java - ImportError: No module named py4j.java_gateway -

python - Receiving "KeyError" after decoding json result from url -

.net - Creating a new Queue Manager and Queue in Websphere MQ (using C#) -