【发布时间】:2017-11-30 02:51:33
【问题描述】:
我必须制作一个程序来显示孩子出生时的name、surname 和year。一切正常,除了friend 函数,它必须访问private/protected 变量birth_year 并显示0,如果他的birth_year 大于2007,否则显示@ 987654331@.
代码如下:
#include <iostream>
#include <string.h>
using namespace std;
class child{
protected:
char name[20],surname[20];
int birth_year;
public:
child(char*,char*,int);
getyear();
show();
friend void itsolder();
};
child::child(char* n, char* p, int a)
{
strcpy(name,n);
strcpy(surname,p);
birth_year=a;
}
child::getyear()
{
return birth_year;
}
child::show()
{
cout << "Name: " << name << endl;
cout << "Surname: " << surname << endl;
cout << "Year of birth: " << birth_year << endl;
}
void itsolder(child&year)
{
if (year.birth_year>2007)
cout << "0" << endl;
else
cout << "1" << endl;
}
int main()
{
child c1("Richard", "John", 1997);
c1.show();
cout << c1.getyear() << endl;
itsolder(c1.birth_year)
return 0;
}
以下是错误:
-
int child::birth_year是protected; - “在此上下文中” - 是我将条件放入
friend函数的位置,我将其调用到main()中; - 来自
int类型表达式的child&类型引用的初始化无效
【问题讨论】:
-
child::getyear()是错误的(如果这是为了引入函数体,必须事先指定返回类型)
标签: c++ function private protected