33,311
社区成员
error C2664: “Teacher::Teacher(double,double,double,std::string)”: 不能将参数 3 从“std::string”转换为“double”
1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
#include<iostream>
#include<string>
using namespace std;
class Teacher
{
protected:
double m_dFixedWage;//固定工资
double m_dPeriodAllow;//课时补贴
string m_sName;//教师名字
double m_dClassHour;//课时
public:
Teacher(double dFixedWage,double dPeriodAlllow,double dClassHour,string sName);
virtual double GetWage()//计算总工资
{
return m_dClassHour * m_dPeriodAllow+m_dFixedWage;};
virtual void display()=0;//纯虚函数
void SetName(string sName);//教师的名称
};
class Professor:public Teacher
{
public:
Professor(double dClassHour,string sName,double dFixedWage=5000,double dPeriodAllow=50):Teacher(dFixedWage,dPeriodAllow,dClassHour,sName){};
virtual void display(){
cout<<"教授"<<"姓名:"<<m_sName<<"课时:"<<m_dClassHour<<endl;
};
};
class AssociateProfessor: public Teacher
{
public:
AssociateProfessor(double dClassHour,string sName,double dFixedWage=3000,double dPeriodAllow=30):Teacher(dFixedWage,dPeriodAllow,sName,dClassHour){};
virtual void display(){
cout<<"副教授"<<"姓名:"<<m_sName<<"课时:"<<m_dClassHour<<endl;
};
};
class Lecturer:public Teacher{
public:
Lecturer(double dClassHour,string sName,double dFixedWage=3000,double dPeriodAllow=20):Teacher(dFixedWage,dPeriodAllow,dClassHour,sName){};
virtual void display(){
cout<<"讲师"<<"姓名:"<<m_sName<<"课时:"<<m_dClassHour<<endl;
}
};
int main()
{
Professor pro(100,"q");
pro.display();
cout<<"工资:"<<pro.GetWage()<<endl;
AssociateProfessor ass(100,"w");
ass.display();
cout<<"工资:"<<ass.GetWage()<<endl;
Lecturer lec(100,"e");
lec.display();
cout<<"工资:"<<lec.GetWage()<<endl;
system("pause");
return 0;
}
[广而告之]http://t.csdn.cn/2ZOko 试试在线IDE+ChatGPT,有问题直接在IDE里求助ChatGPT
AssociateProfessor(double dClassHour,string sName,double dFixedWage=3000,double dPeriodAllow=30):Teacher(dFixedWage,dPeriodAllow,sName,dClassHour){};
sName跟dClassHour互换一下位置
AssociateProfessor(double dClassHour,string sName,double dFixedWage=3000,double dPeriodAllow=30):Teacher(dFixedWage,dPeriodAllow,sName,dClassHour){};
是不是因为这句?Teacher()的第三个参数之前都是dClassHour,在这里变成sName了。