当我执行下面的代码时,它会在第9行中生成2个错误c1 :: x无法访问和丢失)。请解释。提前谢谢......
#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;
}
答案 0 :(得分:3)
友元函数需要知道存在类c1
和c2
。 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
};
我还添加了一些遗漏的声明。您还需要getch
和clrscr
的标题。