क्या सीपीपी फ़ाइल में अपने उपयोगकर्ताओं से सी ++ कक्षा के निजी डेटा सदस्यों को छिपाने का कोई तरीका है? मैं निजी सदस्यों के कार्यान्वयन के हिस्से के रूप में सोचता हूं और यह हेडर फ़ाइल में उन्हें घोषित करने के लिए थोड़ा सा पीछे लगता है।निजी डेटा सदस्यों को छुपाएं? (सी ++)
उत्तर
"पिंपल" मुहावरे यह है कि इसे आम तौर पर कैसे संभाला जाता है।
देखें
- http://www.gotw.ca/gotw/024.htm
- http://www.gotw.ca/gotw/028.htm
- http://herbsutter.com/gotw/_100/ (के लिए सी ++ 11 अद्यतन)
यह करने के लिए बढ़िया तरीका एक आंतरिक वर्ग के लिए एक प्रॉक्सी सूचक के साथ है जो कार्यक्षमता लागू करता है। सी ++ में आंशिक कक्षा परिभाषाओं का कोई तरीका नहीं है जिसे मैं जानता हूं।
देखें आप pimpl मुहावरा
शीश, यहां चारों ओर जल्दी होना चाहिए –
वाणिज्यिक जा रहे हैं की तरह कुछ का उपयोग करना चाहते हैं? ;)
आप हेडर फाइलें बना सकते हैं, जिसमें आप केवल सार्वजनिक और संरक्षित एपीआई घोषित करते हैं।
उपयोगकर्ता केवल इनके साथ प्रस्तुत किया गया है, जिसमें वे शामिल कर सकते हैं। वे अपने कोड को लाइब्रेरी से जोड़ते हैं, जिसे आपने पूर्ण एपीआई और परिभाषाओं का उपयोग करके बनाया है।
इनलाइन कार्यों के लिए: सुनिश्चित करें कि वे गैर-रेखांकित कोड में उपयोग किए जाते हैं, फिर लाइब्रेरी में एक परिभाषा उपलब्ध होगी (मुझे यकीन नहीं है कि यह उपयोगकर्ता लागू करने में उल्लिखित होगा)।
टेम्पलेट कोड के लिए कोई वास्तविक तरीका नहीं है। एक आधा दिल वाला समाधान कोड बनाना है, जो विभिन्न ऑब्जेक्ट प्रकारों के साथ टेम्पलेट कोड का उपयोग करता है। उपयोगकर्ता इन तक ही सीमित होगा, क्योंकि वे आपकी लाइब्रेरी में उपलब्ध एकमात्र परिभाषा हैं।
धन्यवाद, यह अब काम करता है। उन दो लेखों ने मुहावरे को अच्छी तरह से समझाया। – jeffythedragonslayer
क्या इसका कोई प्रदर्शन प्रभाव पड़ता है? – jjxtra
सामान्य रूप से, हां इसका प्रदर्शन प्रभाव हो सकता है, क्योंकि जब भी निजी सामान का उपयोग किया जाता है तो एक पॉइंटर अव्यवस्था शामिल होती है। हालांकि, एक कंपाइलर इसे अनुकूलित करने में सक्षम हो सकता है कि प्रभाव नगण्य है। –