दिलचस्प पोस्ट
एक्वाप्स में जवाडॉक पैकेजों को पहचानने में विफल रहा है FFmpeg के साथ वीडियो घूम रहा है हास्केल में अपवाद हैंडलिंग पायथन स्ट्रिंग में HTML संस्थाओं को डिकोड करें? जावास्क्रिप्ट में समापन के लिए एक व्यावहारिक उपयोग क्या है? आप अलग-अलग कॉलम के साथ आर में एक सीएसवी फ़ाइल कैसे पढ़ सकते हैं एक सामान्य संरचना के निर्माता में "अपेक्षित प्रकार पैरामीटर" त्रुटि एक कोणीय जेएस नियंत्रक का जीवन चक्र क्या है? आत्म संदर्भ मैं जावास्क्रिप्ट में दो तिथियों के बीच अंतर कैसे प्राप्त करूं? एंड्रॉइड: नेविगेशन ड्रॉवर के अंदर 2 या अधिक विस्तारयोग्य लिस्ट दृश्य विंडोज पर पायथन के लोकेल को सेट करने का सही तरीका क्या है? मैं अपने ऐप से कैलेंडर कैसे खोल सकता हूं? सभी बटन को एकल कार्य श्रोता को संलग्न करना स्ट्रिंग में पहला अन-दोहराया वर्ण ढूंढें

एक दायरे के बिना स्कोप रेज़ोल्यूशन ऑपरेटर

सी ++ में, एक दायरे के बिना उपयोग किए जाने वाले स्कोप रेज़ोल्यूशन ऑपरेटर का क्या उद्देश्य है? उदाहरण के लिए:

::foo(); 

Solutions Collecting From Web of "एक दायरे के बिना स्कोप रेज़ोल्यूशन ऑपरेटर"

इसका अर्थ है वैश्विक क्षेत्र आपको इस ऑपरेटर का उपयोग करने की आवश्यकता हो सकती है जब आपके पास एक ही दायरे में विवादित फ़ंक्शंस या वेरिएबल्स हों और आपको वैश्विक स्तर पर उपयोग करने की आवश्यकता हो। आपके पास कुछ ऐसा हो सकता है:

 void bar(); // this is a global function class foo { void some_func() { ::bar(); } // this function is calling the global bar() and not the class version void bar(); // this is a class member }; 

यदि आपको क्लास सदस्य फ़ंक्शन के भीतर से वैश्विक बार () फ़ंक्शन कॉल करने की आवश्यकता है, तो आपको फ़ंक्शन के वैश्विक संस्करण को प्राप्त करने के लिए :: बार () का उपयोग करना चाहिए।

इसके अलावा आपको यह भी ध्यान देना चाहिए कि अधिभार रिज़ॉल्यूशन से पहले नाम का संकल्प हो। इसलिए यदि आपके वर्तमान दायरे में एक ही नाम के साथ कुछ है तो यह अन्य नामों को ढूंढना बंद कर देगा और उनका उपयोग करने का प्रयास करेगा।

 void bar() {}; class foo { void bar(int) {}; void foobar() { bar(); } // won't compile needs ::bar() void foobar(int i) { bar(i); } // ok } 

स्कोप रेज़ोल्यूशन ऑपरेटर ( :: 🙂 के साथ शुरू होने वाला एक नाम वैश्विक नाम स्थान में देखा जाता है। हम इसे मसौदा सी ++ मानक अनुभाग 3.4.3 योग्य देखे जाने वाले अनुच्छेद 4 देखकर देख सकते हैं, जो कहता है ( जोर दिया ):

यूनिअर स्कोप ऑपरेटर द्वारा प्रीफ़िक्स्ड नाम: (5.1) वैश्विक क्षेत्र में अनुवाद यूनिट में देखा जाता है , जहां इसका उपयोग किया जाता है। नाम वैश्विक नाम स्थान के क्षेत्र में घोषित किया जाएगा या एक ऐसा नाम होगा जिसका घोषणा वैश्विक उपयोग में प्रत्यक्ष-निर्देश (3.4.3.2) के कारण दिखाई देगी। का प्रयोग :: एक वैश्विक नाम को संदर्भित करने के लिए अनुमति देता है, भले ही इसकी पहचानकर्ता छिपा हुआ हो (3.3.10)।

मानक राज्यों के रूप में हमें वैश्विक नेमस्पेस से नामों का उपयोग करने की अनुमति मिलती है जो अन्यथा छिपी होती है , लिंक्ड दस्तावेज़ से उदाहरण निम्नानुसार है:

 int count = 0; int main(void) { int count = 0; ::count = 1; // set global count to 1 count = 2; // set local count to 2 return 0; } 

शब्दांकन बहुत ही समान है N1804 पर वापस जा रहा है जो कि उपलब्ध सबसे पहले प्रारूप मानक है।

जब आपके पास पहले से ही आपके स्थानीय क्षेत्र में फ़ू नामित फ़ंक्शन है लेकिन आपको वैश्विक क्षेत्र में एक का उपयोग करने की आवश्यकता है।

वैश्विक दायरे का जिक्र करते हुए

मेरा सी ++ जंगली है लेकिन मेरा मानना ​​है कि यदि आपके स्थानीय क्षेत्र में घोषित समारोह है, जैसे कि foo () और एक वैश्विक दायरे में, foo () स्थानीय को संदर्भित करता है :: foo () वैश्विक एक को देखेंगे