类的构造函数一直报错:no matching function。。。
#include <iostream>
#include <string>
using namespace std;
class Date
{
private:
int year,month,day;
static int minyear,maxyear;
public:
Date(int y=0,int m=0,int d=0);
void SetMaxyear(int max);
void SetMinyear(int min);
int getyear();
int getmonth();
int getday();
};
Date::Date(int y,int m,int d)
{
if(y>maxyear)year = maxyear;
else if(y<minyear)year = minyear;
else year = y;
month = m;
day = d;
}
void Date::SetMaxyear(int max)
{
maxyear = max;
}
void Date::SetMinyear(int min)
{
minyear = min;
}
int Date::getyear()
{
return year;
}
int Date::getmonth()
{
return month;
}
int Date::getday()
{
return day;
}
int Date::minyear = 0;
int Date::maxyear = 0;
class Student
{
private:
int number;
string name;
Date birthday;
public:
Student(Date b,int num = 0,string na=" ");
int getnumber();
Date getbirthday();
};
Student::Student(Date b,int num,string na)
{
number = num;
na = name;
birthday = b;
}
int Student::getnumber()
{
return number;
}
Date Student::getbirthday()
{
return birthday;
}
ostream& operator<<(ostream &output,Student temp)
{
output<<temp.getnumber()<<" "<<temp.getbirthday().getyear()<<" "<<temp.getbirthday().getmonth()<<" "<<temp.getbirthday().getday();
return output;
}
class StudentList:public Student
{
private:
Student people[100];
int n;
public:
StudentList(int nm=0);
void AddStudent(Student stu);
void DeleteStudent(int num);
StudentList GetStudent(int year1,int year2);
void Print();
friend ostream& operator<<(ostream output,Student temp);
};
StudentList::StudentList(int nm)
{
n = nm;
}
void StudentList::AddStudent(Student stu)
{
people[n]=stu;
n++;
}
void StudentList::DeleteStudent(int num)
{
int f=0;
for(int i;i<n-1;i++)
{
if(people[i].getnumber()==num&&!f)f=1;
if(f)people[i]=people[i+1];
}
n--;
}
StudentList StudentList::GetStudent(int year1,int year2)
{
StudentList temp;
for(int i;i<n;i++)
{
if(people[i].getbirthday().getyear()<year2&&people[i].getbirthday().getyear()>year1)
temp.AddStudent(people[i]);
}
return temp;
}
void StudentList::Print()
{
if(n>0)
for(int i=0;i<n;i++)
{
cout<<people[i].getbirthday()<<endl;
}
else
cout<<"No result."<<endl;
}
定义了三个类,后面两个类有继承关系。
红色的敌法一直报错