कर बीच क्या अंतर है:"मित्र संरचना ए;" के बीच क्या अंतर है और "दोस्त ए;" वाक्य - विन्यास?
struct A;
struct B { friend struct A; };
और
struct A;
struct B { friend A; };
क्या यह दूसरे भाग में struct
बाहर छोड़ने के लिए क्या मतलब है?
कर बीच क्या अंतर है:"मित्र संरचना ए;" के बीच क्या अंतर है और "दोस्त ए;" वाक्य - विन्यास?
struct A;
struct B { friend struct A; };
और
struct A;
struct B { friend A; };
क्या यह दूसरे भाग में struct
बाहर छोड़ने के लिए क्या मतलब है?
अंतर यह है कि यदि आप friend A;
लिखते हैं, A
एक ज्ञात प्रकार का नाम होना चाहिए, जिसे पहले घोषित किया जाना चाहिए।
आप friend struct A;
लिखते हैं, यह अपने आप में A
की घोषणा है, इसलिए कोई पूर्व घोषणा की आवश्यकता नहीं:
struct B { friend struct A; }; // OK
वहाँ कई बारीकियों हालांकि रहे हैं। उदाहरण के लिए, friend class/struct A
वर्ग B
के अंतरतम संलग्नित नाम स्थान में वर्ग A
वाणी (Captain Obvlious करने के लिए धन्यवाद):
A
एक है:
class A;
namespace N {
class B {
friend A; // ::A is a friend
friend class A; // Declares class N::A despite prior declaration of ::A,
// so ::A is not a friend if previous line is commented
};
}
इसके अलावा कई अन्य मामलों के लिए जब आप लिख सकते हैं केवल friend A
हैं टाइपिफ़-नाम:
class A;
typedef A A_Alias;
struct B {
// friend class A_Alias; - ill-formed
friend A_Alias;
};
जो भी
template<typename A>
struct B {
// friend class A; - ill-formed
friend A;
};
आईआईआरसी, बाद में आप पूर्ण 'मित्र टाइपनाम ए' का उपयोग कर सकते हैं? – quetzalcoatl
@quetzalcoatl no, [आप नहीं कर सकते] (http://coliru.stacked-crooked.com/a/f080bdde9d602ac1), आप शायद इसे [इस] के साथ भ्रमित कर रहे हैं (http://coliru.stacked-crooked.com/ए/818df2034d15bcf6) –
@CaptainObvlious इस बात को इंगित करने के लिए धन्यवाद, मैंने जवाब अपडेट किया। –
कुछ भी नहीं है, यह देखते हुए स्निपेट आपके द्वारा दिए गए:टेम्पलेट पैरामीटर है। – Sneftel
दूसरे कोड स्निपेट के लिए, मैं कहना चाहता था कि 'एक शून्य foobar (int, double) परिभाषित करें' लेकिन 'स्ट्रक्चर ए' की पूर्ववर्ती घोषणा, उस (आधे) मजाक को अमान्य करती है। एह। – quetzalcoatl
यदि आप प्रस्तावित शीर्षक परिवर्तन से सहमत नहीं हैं, तो मुझे पुनः प्रयास करने में संकोच न करें। मैंने सोचा कि मूल शीर्षक अधिक पसंद आया .. किशोर सहकर्मी-समर्थन मंच: | शायद यह सिर्फ मुझे है .. – quetzalcoatl