c++:将头文件和cpp文件分开时,头文件中的构造函数声明报错,为什么?

#include"person.h"#include<iostream>#include<string>usingnamespacestd;#include"person... #include"person.h"
#include<iostream>
#include<string>
using namespace std;
#include"person.h"

class Teacher:public Person
{
private:
string m_strTitle;
string m_strResearch;
int m_nSalary;
public:
Teacher(string name,char gender,int age,string title,string research,int salary):Person(name,gender,age);//最后这个分号下有红色波浪线,Error:应输入{
void Display();
};
展开
 我来答
布克斯逸
2015-05-14 · TA获得超过782个赞
知道小有建树答主
回答量:1041
采纳率:0%
帮助的人:481万
展开全部
因为你的意图是,声明和定义在一起了。所以应该将;号改为{,并后续添加定义代码。
whj_njit
2015-05-14 · TA获得超过230个赞
知道小有建树答主
回答量:387
采纳率:0%
帮助的人:254万
展开全部
请把:Person(name,gender,age)这个去掉
追问
可是这是继承要用的啊
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
52927588
2020-07-20 · 超过14用户采纳过TA的回答
知道答主
回答量:31
采纳率:0%
帮助的人:19.7万
展开全部
致命错误:
子类不可以继承父类构造函数;(但是子类可以显式调用父类构造函数;)
============================================
你的用意是 .h声明 和 .cpp定义 分开,所以应该这么写:
Teacher.h
class Teacher:public Person
{
private:
string m_strTitle;
string m_strResearch;
int m_nSalary;
public:
Teacher(string name,char gender,int age,string title,string research,int salary);//声明
//声明时只要交代清楚函数名、参数列表、返回类型这几个问题即可。不需要交代函数的具体实现(是调用了父类构造还是用了什么鬼方法,统统不需要)
void Display();
};

Teacher.cpp
#include"person.h"
Teacher(string name,char gender,int age,string title,string research,int salary)
: Person(name,gender,age){//定义
//在定义中显式调用父类构造函数
......
//或其它什么鬼函数
.....
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式