2014-02-14 2 views
0

아래 코드를 실행하면 line9에서 2 개의 오류 c1 :: x에 액세스 할 수없고 누락 된 오류가 발생합니다. 설명 해주십시오. 사전에 감사 ...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

관련 문제