कुछ ऐसा कर दिया गया है मुझे थोड़ी देर के लिए परेशान कर रहा:क्या प्रत्येक वर्ग का अपना नामस्थान होना चाहिए?
वर्तमान ज्ञान है कि प्रकार एक namespace है कि केवल कार्य करता है जो प्रकार की गैर-सदस्य इंटरफ़ेस का हिस्सा है शामिल हैं में रखा जाना चाहिए है (देखें सी ++ कोडिंग मानक एडीएल को असंबंधित परिभाषाओं में खींचने से रोकने के लिए सटर और अलेक्जेंड्रेस्कु या here)।
क्या यह दर्शाता है कि सभी कक्षाओं के पास अपना नामस्थान होना चाहिए? यदि हम मानते हैं कि गैर-सदस्य फ़ंक्शंस के अतिरिक्त भविष्य में एक वर्ग को बढ़ाया जा सकता है, तो यह दो प्रकारों को समान नामस्थान में रखने के लिए सुरक्षित नहीं हो सकता है क्योंकि उनमें से कोई भी गैर-सदस्य फ़ंक्शन पेश कर सकता है जो दूसरे के साथ हस्तक्षेप कर सकता है।
कारण मैं पूछता हूं कि नामस्थान मेरे लिए बोझिल हो रहे हैं। मैं एक हेडर-केवल लाइब्रेरी लिख रहा हूं और मुझे अपने आप को कक्षा नामों का उपयोग करना पड़ता है जैसे कि प्रोजेक्ट :: घटक :: class_name :: class_name। उनके कार्यान्वयन सहायक कार्यों को कॉल करते हैं लेकिन चूंकि ये एक ही नामस्थान में नहीं हो सकते हैं, उनके पास भी पूरी तरह से योग्यता प्राप्त करने के लिए है!
संपादित करें:
कई जवाब सुझाव दिया है कि सी ++ नामस्थान बस नाम संघर्ष से बचने के लिए एक तंत्र है। ऐसा नहीं है। पैरामीटर लेने वाले सी ++ फ़ंक्शंस में Argument Dependent Lookup का उपयोग करके हल किया गया है। इसका अर्थ यह है कि जब संकलक फ़ंक्शन नाम से मेल खाने वाली फ़ंक्शन परिभाषा को खोजने का प्रयास करता है तो यह को उसी पैरास्पेस (ओं) के प्रत्येक पैरामीटर को उम्मीदवारों को ढूंढते समय के रूप में देखेगा।
इसमें A Modest Proposal: Fixing ADL में विस्तृत के रूप में अनपेक्षित, अप्रिय परिणाम हो सकते हैं। सटर और अलेक्जेंड्रेस्कू के नियमों ने कभी भी एक ही नामस्थान में एक वर्ग के रूप में कार्य नहीं किया जब तक कि वह उस वर्ग के इंटरफ़ेस का हिस्सा न हो। मैं नहीं देखता कि मैं उस नियम का पालन कैसे कर सकता हूं जब तक कि मैं प्रत्येक वर्ग को अपना नामस्थान देने के लिए तैयार नहीं हूं।
अधिक सुझाव बहुत स्वागत है!
"उनके कार्यान्वयन कॉल सहायक कार्यों [कि] को पूरी तरह से योग्यता प्राप्त करनी है" - आप फंक्शन बॉडी के अंदर 'उपयोग' घोषणा या निर्देश डाल सकते हैं, अगर यह बिल्कुल मदद करता है। –
सभी चीजों के प्यार के लिए पवित्र, कक्षाओं और नामस्थानों के बीच 1: 1 अनुपात लागू न करें। नामस्थान रखने के पूरे उद्देश्य को हरा देता है, और बहुत अधिक उंगली-काम की ओर जाता है। –
@ जेम्स डी: मैं असहमत हूं। मुझे लगता है कि यह बहुत दूर नहीं जाता है। हमें यह सुनिश्चित करने की भी आवश्यकता है कि प्रत्येक नेमस्पेस स्वयं नामस्थान में है। –