2009-09-30 13 views
19

क्या एक फ़ंक्शन परिभाषा के अंदर परिभाषित एक सी ++ नेमस्पेस उपनाम में ब्लॉक, फ़ंक्शन, फ़ाइल या अन्य स्कोप (वैधता की अवधि) है?सी ++ में नेमस्पेस उपनाम का दायरा क्या है?

+0

क्या आपका मतलब है "[नेमस्पेस] का उपयोग करना;" ? –

+0

ऐसा लगता है कि उनका मतलब है कि अधिक आसानी से उपयोग किए जाने वाले पहचानकर्ता के लिए लंबे नामस्थान नाम का अलियासिंग: http://msdn.microsoft.com/en-us/library/chwe1tc8.aspx – Twisol

+4

नेमस्पेस उपनाम (और घोषणाओं का उपयोग करके) सी ++ में अन्य घोषणाओं के समान स्कॉइंग नियम। –

उत्तर

20

यह वैधता की एक ब्लॉक अवधि है। उदा। यदि आप नीचे दिए गए नेमस्पेस उपनाम को परिभाषित करते हैं, तो नेमस्पेस उपनाम एबीसी {...} ब्लॉक के बाहर अमान्य होगा।

 

{ 
    namespace abc = xyz; 
    abc::test t; //valid 
} 
    abc::test t; //invalid 
 
+0

सिवाय इसके कि यह वर्ग के दायरे में काम नहीं करता है। –

0

इसमें उस ब्लॉक का दायरा होगा जिसमें इसे परिभाषित किया गया था - फ़ंक्शन स्कोप के समान होने की संभावना है जब तक कि आप किसी फ़ंक्शन के भीतर किसी ब्लॉक के अंदर उपनाम घोषित न करें।

0

मैं काफी हद तक निश्चित हूं कि नामस्थान उपनाम केवल उस ब्लॉक के भीतर गुंजाइश है जिसमें यह बनाया गया है, जैसे कि अन्य प्रकार के पहचानकर्ता। मैं इस समय निश्चित रूप से जांच नहीं कर सकता, लेकिन this page इसके खिलाफ नहीं प्रतीत होता है।

0

जहां तक ​​मुझे पता है, यह उस दायरे में है जिसे घोषित किया गया है। इसलिए, यदि आप किसी विधि में उपनाम करते हैं, तो यह उस विधि में मान्य है, लेकिन दूसरे में नहीं।

1

दायरा घोषणात्मक क्षेत्र है जिसमें उपनाम परिभाषित किया गया है।

0

यह गुंजाइश है जिसमें यह शुरू की है की अवधि के लिए वैध है पर एक नजर डालें।

http://en.cppreference.com/w/cpp/language/namespace_alias पर एक नज़र डालें, मुझे cppreference की व्याख्या पर भरोसा है, यह अधिक मानक है।

+0

कृपया केवल एक लिंक प्रदान न करें। उस पृष्ठ से कम से कम आंशिक अंश भी जोड़ें जो आप संदर्भित कर रहे हैं। – Matthias

संबंधित मुद्दे