इम अंदर इस तरह नाम स्थान बाहर की कक्षा दोस्त समारोह को परिभाषित करने की कोशिश कर रहा:वर्ग दोस्त समारोह एक namespace
namespace A{
class window{
private:
int a;
friend void f(window);
};
}
void f(A::window rhs){
cout << rhs.a << endl;
}
इम एक त्रुटि हो रही है कहा अस्पष्टता नहीं है। और दो उम्मीदवार void A::f(A::window);
और void f(A::window)
हैं। तो मेरा सवाल है:
1) वैश्विक कार्य void f(A::window rhs)
कक्षा ए :: विंडो के मित्र को कैसे बनाएं।
संपादित करें: (उत्तर पढ़ने के बाद)
2) कारण है कि मैं ::f(window)
करके वैश्विक होने के लिए विंडो वर्ग के अंदर च सदस्य समारोह में अर्हता प्राप्त करने की आवश्यकता है?
3) मुझे इस विशेष मामले में फ़ंक्शन f (ए :: विंडो) की पूर्ववत करने की आवश्यकता क्यों है, जबकि जब कक्षा को नामस्थान के अंदर परिभाषित नहीं किया जाता है तो फ़ंक्शन घोषित होने के बाद फ़ंक्शन घोषित किया जाता है एक दोस्त।
इसलिए :: ग्लोबल नेम स्पेस का उपयोग करने के उपसर्ग एक है कि आवश्यक है पूर्व घोषित समारोह शून्य एफ (ए :: खिड़की); क्या ये सही है। अग्रिम में धन्यवाद। – AlexDan
हां यह काम करता है जब फ़ंक्शन शून्य हो जाता है। लेकिन क्या होगा अगर यह कक्षा का एक उदाहरण देता है, बी कहते हैं? फिर "दोस्त बी :: एफ()" पर कंपाइलर बारफ्स क्योंकि ऐसा लगता है कि हमारा मतलब है "बी :: एफ()" (यानी क्लास बी का एक फ़ंक्शन, वैश्विक फ़ंक्शन के विपरीत)। उस के लिए कोई समाधान? –
मुझे नहीं लगता कि आप कानूनी रूप से नाम के साथ कैसे समाप्त कर सकते हैं - क्या आप इसे विचारधारा की तरह कुछ दिखा सकते हैं? – Flexo