मेरे पास कोड है जो कुछ उपयोगिता वर्ग उत्पन्न करने के लिए प्रीप्रोसेसर-भारी ढांचे का उपयोग करता है। जाहिर है, मैक्रो की कुछ ही friend
घोषणा में परिणाम एक कक्षा में दो बार शामिल करने, कुछ इस तरह:"पहले से ही एक दोस्त" चेतावनी उपयोगी कब है?
class Friendly {
// :::
friend class Bestie;
friend class Bestie;
// :::
};
जब जीसीसी (4.8.1) के साथ बनाया गया है, यह
समान एक चेतावनी उत्पन्न करता है
Bestie
पहले से हीFriendly
के एक दोस्त [डिफ़ॉल्ट रूप से सक्षम]
मैं वास्तव में इस चेतावनी में एक प्रयोग नहीं देख सकता है। मैं उत्सुक हूं कि इसे पहली जगह में जीसीसी में क्यों शामिल किया गया था। हालांकि, जैसा कि एसओ समुदाय द्वारा शायद ही उत्तरदायी है, मैं इस तरह अपना प्रश्न बताऊंगा: friend
से कौन सी समस्याएं उत्पन्न हो सकती हैं, या फिर प्रोग्रामर त्रुटियों की घटना क्या हो सकती है?
एकमात्र समस्या जो मैं सोच सकता हूं कि यह किस पर संकेत दे सकता है "आप एक ही चीज़ के बजाय यहां कुछ और लिखना चाहते हैं, इसलिए मैं आपको इसके बारे में चेतावनीपूर्वक चेतावनी दूंगा।" हालांकि, इस तरह के मामले में, इच्छित दोस्ती गायब हो जाएगी, जिससे दोस्ती का उपयोग करने वाले कोड में "एक्सेस कंट्रोल उल्लंघन" त्रुटि हो जाएगी, इसलिए मुझे चेतावनी का थोड़ा उपयोग दिखाई देता है।
क्या कोई संभावित समस्या है जो मैं देख रहा हूं?
आईएमओ, कोड डुप्लिकेशन डिफ़ॉल्ट रूप से खराब है। समस्या जो मैं देख सकता हूं वह यह है कि यदि आप किसी मित्र को विकास के समय एक कक्षा में घोषित करते हैं, और बाद में इस घोषणा को हटाने की आवश्यकता है, तो यह आसान है कि मित्र घोषणा केवल एक बार लिखी जाए, और 42 बार पूरी नहीं वर्ग परिभाषा ... निष्कर्ष निकालने के लिए, मैं कहूंगा कि बेकार कोड लिखा नहीं जाना चाहिए, शायद यही कारण है कि एक चेतावनी है। – Unda