#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。
先看截图:
修改如下:
#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); // 修改
}