2010-10-11 4 views
5

संभव डुप्लिकेट:
Is this key-oriented access-protection pattern a known idiom?एक दोस्त वर्ग को अन्य कक्षा के 1 कार्य में केवल विशेष पहुंच है?

मैं class A और class B है। मैं class B के निजी कार्यों में से एक तक पहुंचने के लिए चाहता हूं; लेकिन केवल वह सब कुछ नहीं। क्या यह संभव है?

उदाहरण के कुछ प्रकार:

class A { 
    //stuff 
}; 

class B { 
    int r; // A cant use this 
    MagicFriendKeyword A void func(); // A can use this 
public: 
    ... 
}; 
+4

की डुप्लीकेट [इस कुंजी उन्मुख पहुँच सुरक्षा पैटर्न एक ज्ञात मुहावरा है?] Http://stackoverflow.com/questions/3220009/is-this-key-oriented- पहुंच-संरक्षण-पैटर्न-एक जाने-माने-मुहावरा)। यह प्रश्न एक उदाहरण देता है कि आप जो भी पूछ रहे हैं उसे प्राप्त कर सकते हैं; असल में [यह सवाल] (http://stackoverflow.com/questions/3217390/clean-c-granular-friend-equivalent-answer-attorney-client-idiom) एक बेहतर डुप्लिकेट हो सकता है। –

+0

यह भी देखें [यह प्रश्न] (http://stackoverflow.com/questions/3324898/can-we-increase-the-re-usability-of-this-key-oriented-access-protection-pattern), जो चाहता है इसे सामान्यीकृत करें। मुझे लगता है कि हम "पासकी दोस्त मुहावरे" नाम से समाप्त हुए। विचार यह है कि केवल कुछ वर्ग ही "पासकी" प्रकार बना सकते हैं, और फ़ंक्शन केवल कुछ पासकी स्वीकार करता है, पहुंच या "दोस्ती" प्रदान करता है। – GManNickG

+0

और अधिक हैं - और संदर्भ के आधार पर बेहतर संदर्भ - संदर्भित चर्चाओं से कवर किए गए समाधान। विशेष रूप से, एक इंटरफेस के रूप में 'func' फैक्टरिंग। ओपन-एंडेड प्रश्नों को बंद न करें, कृपया, जब तक कि इसी तरह की पुरानी चर्चा खुली-समाप्ति और पूर्ण न हो। –

उत्तर

4

यदि वहाँ वर्ग एक में एक (या कुछ) के सदस्यों को काम करता है, उस वर्ग बी के निजी सदस्य कार्यों का उपयोग करना चाहते हैं, तो आप उन एक/कुछ कार्यों के रूप में घोषणा कर सकते हैं दोस्त। जैसे

class B { 
    // ... 
    friend void A::mutateB(B *); 
    // ... 
}; 

(देखें http://en.wikipedia.org/wiki/Friend_function

+0

मैं चाहता हूं कि ए बी – jmasterx

+0

के 1 निजी फ़ंक्शन को कॉल करने में सक्षम हो, मैं कक्षा ए के एक समारोह तक पहुंचने के लिए सभी कक्षा ए चाहता हूं क्योंकि ए में सैकड़ों कार्यों का उपयोग किया जाएगा। – jmasterx

+5

यह नहीं पूछा जाता है। यह अभी भी बी के _all_ सदस्यों को उस फ़ंक्शन तक पहुंच प्रदान करता है। वह बी – JoshD

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