如何在 c++ 中使用常见的 Friend 函数

How to use a common Friend Function in c++?

本文关键字:常见 Friend 函数 c++      更新时间:2023-10-16

当我执行下面的代码时,它会在第 2 行中生成 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;
}

friend 函数需要知道类c1c2存在。 c1很好,因为朋友在该类中声明为 with。但是对于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 的标头。