这个友元类哪里有问题


#include<iostream>
using namespace std;
class son;
class father {
protected:
    friend class son;
    int f_age;
public:
    void setfage(int a) { f_age = a; }
    int getfage() { return f_age; }
};
class son{
private:
    int s_age;
public:
    void setsage(int A) { s_age = A; }
    int getsage() { return s_age; }
    int total() { return s_age + f_age; }
};
int main() {
    father f;
    son s;
    f.setfage(40);
    s.setsage(18);
    cout << "爸爸的年龄是:" << f.getfage() << endl;
    cout << "儿子的年龄是:" << s.getsage() << endl;
    cout << "两个人的年龄和为:" << s.total();

}

为什么老是显示未标识f_age。

img

先看截图:

img

修改如下:

 
#include<iostream>
using namespace std;
class son;
class father {
protected:
    friend class son;
    int f_age;
public:
    void setfage(int a) { f_age = a; }
    int getfage() { return f_age; }
};
class son{
private:
    int s_age;
public:
    void setsage(int A) { s_age = A; }
    int getsage() { return s_age; }
    int total(father& f) { return s_age + f.f_age; } // 修改
};
int main() {
    father f;
    son s;
    f.setfage(40);
    s.setsage(18);
    cout << "爸爸的年龄是:" << f.getfage() << endl;
    cout << "儿子的年龄是:" << s.getsage() << endl;
    cout << "两个人的年龄和为:" << s.total(f); // 修改
 
}