2009-12-23 12 views
5

क्या कक्षा के नामस्थान मित्र को बनाना संभव है, कहें कि मेरे पास कई कक्षाओं के साथ यूनिट टेस्ट नेमस्पेस है और मैं चाहता हूं कि टेस्ट नेमस्पेस कक्षा में मित्र बन जाए ताकि उसके पास निजी कार्यान्वयन विवरण तक पहुंच हो।सी ++ में नामस्थान और मित्र की बातचीत?

उत्तर

1

नहीं, यह सी ++ में संभव नहीं है। स्पष्ट रूप से, यह खराब डिजाइन की smacks।

+1

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

+2

कक्षाओं और नामस्थानों के बीच कई अंतर हैं। –

+5

एक अंतर यह है कि एक नामस्थान बंद नहीं है: आप हमेशा इसे खोलते हैं और इसमें चीजों को जोड़ना शुरू करते हैं। इसलिए एक नामस्थान घोषित करना एक दोस्त पूरी तरह से खुद को खोलने वाला होगा। एक वर्ग को उतारो, जो समापन पर समाप्त हो गया है}; –

0

यदि आप .NET का उपयोग कर रहे हैं, तो आप InternalsVisibleTo attribute पर एक नज़र डालना चाहेंगे। वैसे भी ध्यान दें कि यह पूरे विधानसभाओं के लिए काम करता है, न कि एकल नामस्थानों के लिए।

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