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

#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();
};

因为你的意图是,声明和定义在一起了。所以应该将;号改为{,并后续添加定义代码。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-05-14
请把:Person(name,gender,age)这个去掉追问

可是这是继承要用的啊

本回答被提问者采纳
第2个回答  2020-07-20
致命错误:
子类不可以继承父类构造函数;(但是子类可以显式调用父类构造函数;)
============================================
你的用意是 .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){//定义
//在定义中显式调用父类构造函数
......
//或其它什么鬼函数
.....
}
相似回答