2014-02-14 59 views
0

當我執行下面的代碼時,會產生2個錯誤c1 :: x無法訪問和丟失)在line9中。請解釋。在此先感謝...如何在C++中使用普通的朋友函數?

#include<iostream> 
class c1{ 
    int x; 
    public: 
    void input(){ 
     cout<<"Enter length : "; 
     cin>>x; 
    } 
    friend void output(c1 obj1, c2 obj2); 
}; 
class c2{ 
    int y; 
    public: 
    void input(){ 
     cout<<"Enter breadth : "; 
     cin>>y; 
    } 
    friend void output(c1 obj1, c2 obj2); 
}; 
void output(c1 obj1, c2 obj2){ 
    cout<<"Area is "<<obj1.x*obj2.y; 
} 
int main(){ 
    c1 obj1; 
    c2 obj2; 
    clrscr(); 
    obj1.input(); 
    obj2.input(); 
    output(obj1, obj2); 
    getch(); 
    return 0; 
} 
+2

看起來你需要像'class c2;'這樣在'c1'前面聲明'c2'。 –

+0

你不應該聲明兩次函數... –

回答

3

友元函數需要知道類c1c2存在。 c1沒問題,因爲朋友是在那個班上申請的。但對於c2你需要預先聲明的第一friend聲明之前:

#include<iostream> 

using std::cin; 
using std::cout; 

class c2; // forward declaration 

class c1{ 

.... 
    friend void output(c1 obj1, c2 obj2); // OK now 

}; 

我還添加了一些失蹤聲明。您還需要標頭getchclrscr

+0

謝謝,很好地解釋。 – rippy