2011-03-06 15 views
7

मैंने अभी तक एक विशिष्ट मामला नहीं बनाया है। लेकिन मैं कुछ कोड लिखने के बारे में सोच रहा हूं जो मुझे लगता है कि इसे खत्म करने की आवश्यकता होगी; और इसलिए मैं जानना चाहता था कि:क्या दो वर्ग एक-दूसरे से मित्र हो सकते हैं?

  1. दो कक्षाएं एक दूसरे से मित्र हो सकती हैं; ताकि वे स्वतंत्र रूप से निजी और दूसरे के संरक्षित सदस्यों तक पहुंच सकें (मुझे विश्वास है कि उत्तर हाँ है, और मैं बस इसे आज़मा सकता हूं!)। उत्तर के साथ कोई विस्तृत संदर्भ या अन्य प्रश्न लिंक भी बहुत स्वागत है। मुझे आगे की घोषणाओं के बारे में पता है और इसमें गार्ड कंपाइलर प्री-डायरेक्टिव और उनके उपयोग शामिल हैं। मेरे प्रश्न इस संभावना के संबंध में सी ++ भाषा के अर्थशास्त्र से अधिक संबंधित हैं, जो इस संभावना के संबंध में आपत्तिजनक दोस्ती के और उचित तरीके से इसका उपयोग कैसे कर सकते हैं।
  2. क्या यह आम तौर पर अनुशंसित है? क्या लोग इस तरह के डिज़ाइन को नियमित आधार पर नियोजित करते हैं? किस परिस्थिति में यह एक अनुशंसित डिजाइन होगा (अधिमानतः कुछ उदाहरणों के साथ)।

    class A { 
        friend class B; 
    }; 
    
    class B { 
        friend class A; 
    }; 
    

    या नहीं, इस समझ में आता है पूरी तरह से समस्या को हल करने की कोशिश कर रहे पर निर्भर करता है:

उत्तर

8

आप कर सकते हैं आपसी दोस्ती की है। यह निश्चित रूप से कुछ परिस्थितियों में समझ में आ सकता है।

पारस्परिक दोस्ती का उपयोग करने वाली मेरी वर्तमान परियोजना का एकमात्र उदाहरण एक कंटेनर कार्यान्वयन है: कंटेनर क्लास इसके इटरेटर वर्ग का मित्र है और इसके विपरीत।

+0

शायद हमें एक और शब्द की आवश्यकता है। ये वर्ग भाई बहन हैं न सिर्फ दोस्तों :-) –

+12

@ मार्टिन: शायद कोई इस के लिए सी ++ में 'बीएफएच' कीवर्ड जोड़ने के प्रस्ताव का मसौदा तैयार कर सकता है! –

+9

@ मार्टिन: * लाभ के साथ दोस्त *? एक "यदि आप मुझे अपना दिखाते हैं, तो मैं आपको दिखाऊंगा" रिश्ते। – nybbler

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