类的构造函数一直报错:no matching function。。。

qq_37751920 2017-05-18 10:58:07
#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;
}
定义了三个类,后面两个类有继承关系。
红色的敌法一直报错
...全文
1342 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37751920 2017-05-18
  • 打赏
  • 举报
回复
引用 4 楼 paschen 的回复:
[quote=引用 3 楼 qq_37751920 的回复:] [quote=引用 2 楼 paschen 的回复:] Student增加一个默认构造函数:Student() {} 或者在StudentList构造函数初始化列表显示调用Student(的构造函数
能问一下问什么Student要加上一个默认构造函数,Date的默认构造是不能传递的么?[/quote] 子类对象构造时,基类没有默认构造函数的话需要显示调用基类的构造函数,否则不能完成基类的构造[/quote] 还有一个问题:为什么我删除了继承关系,还是报同样的错误?
qq_37751920 2017-05-18
  • 打赏
  • 举报
回复
引用 6 楼 lzl569029783 的回复:
你有对 Date(int y=0,int m=0,int d=0); 做定义吗,没有的话就会提示错误
有定义。
stonerebel 2017-05-18
  • 打赏
  • 举报
回复
你有对 Date(int y=0,int m=0,int d=0); 做定义吗,没有的话就会提示错误
qq_37751920 2017-05-18
  • 打赏
  • 举报
回复
还有一个问题:为什么我删除了继承关系,还是报同样的错误?
paschen 版主 2017-05-18
  • 打赏
  • 举报
回复
引用 3 楼 qq_37751920 的回复:
[quote=引用 2 楼 paschen 的回复:] Student增加一个默认构造函数:Student() {} 或者在StudentList构造函数初始化列表显示调用Student(的构造函数
能问一下问什么Student要加上一个默认构造函数,Date的默认构造是不能传递的么?[/quote] 子类对象构造时,基类没有默认构造函数的话需要显示调用基类的构造函数,否则不能完成基类的构造
qq_37751920 2017-05-18
  • 打赏
  • 举报
回复
引用 2 楼 paschen 的回复:
Student增加一个默认构造函数:Student() {} 或者在StudentList构造函数初始化列表显示调用Student(的构造函数
能问一下问什么Student要加上一个默认构造函数,Date的默认构造是不能传递的么?
paschen 版主 2017-05-18
  • 打赏
  • 举报
回复
Student增加一个默认构造函数:Student() {} 或者在StudentList构造函数初始化列表显示调用Student(的构造函数
qq_37751920 2017-05-18
  • 打赏
  • 举报
回复
D:\C\first\practice.cpp||In constructor 'StudentList::StudentList(int)':| D:\C\first\practice.cpp|98|error: no matching function for call to 'Student::Student()'| D:\C\first\practice.cpp|64|note: candidates are: Student::Student(Date, int, std::string)| D:\C\first\practice.cpp|53|note: Student::Student(const Student&)| D:\C\first\practice.cpp|98|error: no matching function for call to 'Student::Student()'| D:\C\first\practice.cpp|64|note: candidates are: Student::Student(Date, int, std::string)| D:\C\first\practice.cpp|53|note: Student::Student(const Student&)| ||=== Build finished: 2 errors, 0 warnings ===| 错误详细信息
lzw2016 2017-05-18
  • 打赏
  • 举报
回复
在studentlist(int nm=0,Date d,int num = 0,string na=" "):student(d,num,na),d(d),n(nm){}
paschen 版主 2017-05-18
  • 打赏
  • 举报
回复
引用 8 楼 qq_37751920 的回复:
[quote=引用 4 楼 paschen 的回复:] [quote=引用 3 楼 qq_37751920 的回复:] [quote=引用 2 楼 paschen 的回复:] Student增加一个默认构造函数:Student() {} 或者在StudentList构造函数初始化列表显示调用Student(的构造函数
能问一下问什么Student要加上一个默认构造函数,Date的默认构造是不能传递的么?[/quote] 子类对象构造时,基类没有默认构造函数的话需要显示调用基类的构造函数,否则不能完成基类的构造[/quote] 还有一个问题:为什么我删除了继承关系,还是报同样的错误?[/quote] 贴你代码和错误信息
真相重于对错 2017-05-18
  • 打赏
  • 举报
回复
你的代码有问题,把studentlist(int nm=0)默认参数取掉,否则 调用 studentlist sl = new studentlist(); 到底调用studentlist() 还是调用studentlist(int nm=0)???
课程导语:    人工智能可谓是现阶段最火的行业,在资本和技术协同支持下正在进入高速发展期。当今全球市值前五大公司都指向同一发展目标:人工智能。近几年,人工智能逐渐从理论科学落地到现实中,与生活越来越息息相关,相关的各种职位炙手可热,而深度学习更是人工智能无法绕开的重要一环。 从AlphaGo打败李世石开始,深度学习技术越来越引起社会各界的广泛关注。不只学术界,甚至在工业界也取得了重大突破和广泛应用。其中应用最广的研究领域就是图像处理和自然语言处理。而要入门深度学习,CNN和RNN作为最常用的两种神经网络是必学的。网上关于深度学习的资料很多,但大多知识点分散、内容不系统,或者以理论为主、代码实操少,造成学员学习成本高。本门课程将从最基础的神经元出发,对深度学习的基础知识进行全面讲解,帮助大家迅速成为人工智能领域的入门者,是进阶人工智能深层领域的基石。 讲师简介:赵辛,人工智能算法科学家。2019年福布斯科技榜U30,深圳市海外高层次人才(孔雀人才)。澳大利亚新南威尔士大学全奖博士,SCI收录其发表过的10篇国际期刊学术文章。曾任深圳市微埃智能科技有限公司联合创始人。CSDN人工智能机器学习、深度学习方向满分级精英讲师。授课风格逻辑严谨、条理清晰、循序渐进、循循善诱,化枯燥为如沐春风,所教学生人数过万。 课程设计: 本课程分为5大模块,19小节,共计540时长(约9小时): 第一部分,课程介绍、目标与内容概览。主要学习人工智能深度学习应用场景;熟悉深度学习主流技术;掌握使用keras解决深度学习主要问题(神经网络、卷积神经网络、循环神经网络),以及深度学习主要内容:神经网络、卷积神经网络、循环神经网络;案例简介。 第二部分,深度学习之多层感知器(MLP)。主要学习多层感知器(MLP);MLP实现非线性分;深度学习实战准备;Python调用keras实现MLP。 MLP技术点实战案例:第三部分,深度学习之卷积神经网络(CNN)。主要学习卷积神经网络 ; CNN模型分析;主流CNN模型; Python调用keras实现CNN; CNN技术点实战案例:第四部分,深度学习之循环神经网络(RNN)。主要学习循环神经网络;RNN模型分析;Python调用keras实现RNN。 RNN技术点实战案例: 第五部分,综合提升。主要进行迁移学习;混合模型;实战准备+综合实战,以及最后进行课程内容总结。 混合模型技术点实战案例

64,644

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧