2013-08-23 8 views
8

आज मुझे दोस्त के फ़ंक्शन के बारे में संदेह है। क्या दो वर्गों में एक ही दोस्त का कार्य हो सकता है? उदाहरण friend void f1(); कक्षा ए और कक्षा बी में घोषित किया गया है क्या यह संभव है? यदि हां, तो क्या कोई फ़ंक्शन f1() दो वर्गों के सदस्यों तक पहुंच सकता है?क्या 2 कक्षाएं मित्र मित्र को साझा कर सकती हैं?

+2

को सुधार हाँ, यह संभव है। हां, 'एफ 1()' दोनों वर्गों के सदस्यों तक पहुंच होगी। – juanchopanza

+6

क्या आपने एक साधारण उदाहरण संकलित करने का प्रयास किया है? ऐसा लगता है कि परीक्षण करना आसान होगा। – Max

+2

आपको क्या लगता है कि यह _not_ संभव होगा? – stijn

उत्तर

0

friends का class का कोई फ़ंक्शन नहीं हो सकता है या नहीं, तो हां इसमें कोई समस्या नहीं है।

+0

ठीक है, आपको फ़ंक्शन का नाम देने में सक्षम होना चाहिए, लेकिन यह एक प्राकृतिक प्रतिबंध है। जैसे 'संरचना {स्थिर शून्य foo(); }; या अन्य अनुवाद इकाइयों में अज्ञात नेमस्पेस में कार्य करता है। – MSalters

14

एक उदाहरण यह सबसे अच्छा समझा जाएगा:

class B;     //defined later 

void add(A,B); 

class A{ 
    private: 
    int a; 
    public: 
    A(){ 
     a = 100; 
    } 
    friend void add(A,B); 
}; 

class B{ 
    private: 
    int b; 
    public: 
    B(){ 
     b = 100; 
    } 
    friend void add(A,B); 
}; 

void add (A Aobj, B Bobj){ 
    cout << (Aobj.a + Bobj.b); 
} 

main(){ 
    A A1; 
    B B1; 
    add(A1,B1); 
    return 0; 
} 

आशा इस मदद करता है!

+0

आपको बहुत धन्यवाद आदमी आपका उदाहरण बहुत अच्छा और समझने में आसान था – user2236974

+0

आपका स्वागत है! – iluvthee07

0

ऊपर कोड

#include<iostream> 
using namespace std; 
class B;     //defined later 
class A;     //correction (A also need be specified) 
void add(A,B); 

class A{ 
    private: 
    int a; 
    public: 
    A(){ 
     a = 100; 
    } 
    friend void add(A,B); 
}; 

class B{ 
    private: 
    int b; 
    public: 
    B(){ 
     b = 100; 
    } 
    friend void add(A,B); 
}; 

void add (A Aobj, B Bobj){ 
    cout << (Aobj.a + Bobj.b); 
} 

main(){ 
    A A1; 
    B B1; 
    add(A1,B1); 
    return 0; 
} 
-1
#include<iostream> 

using namespace std; 

class first 
{ 
    friend void getdata(first object1, int i); 
}; 

class second 
{ 
    friend void getdata(second object2, int j); 
}; 

getdata(first object1, int i, second object2, int j) 
{ 
    cout<<i+j; 
} 

main() 
{ 
    first object1; 
    second object2; 
    getdata(object1, 5, object2, 7); 
} 
संबंधित मुद्दे