Employee(const long n,const char N){number=n,*name=*N;};virtual~Employee(){};const char getName(long n) const{};const long getNumber() const{};virtual double eamings() const=0;virtual void print() const{cout<<"编号:"<<number<<"姓名"<<*name<<endl;};protected:long number;char *name;};class Manager: public Employee{ public:Manager(const long n,const char *N,double u=0.0):Employee(n,*N){}错误的这里说没有匹配构造函数实例子~Manager(){};void setMonthlySalary(double n){number=n;};virtual double eamings() const{return 0;}; virtual
void print()
const{cout<<"编号:"<<number<<"姓名"<<*name<<"月薪"<<monthlySalary<<endl;};private:double monthlySalary;};int main(){ cout<<setiosflags(ios::fixed|ios::showpoint)<<setprecision(2) ;Manager m1(10135,"Cheng ShaoHua", 1200.0) ;Manager m2(10201,"Yan HaiFeng");m2.setMonthlySalary ( 5300.0) ;
3 回答
蓝山帝景
TA贡献1843条经验 获得超7个赞
Manager(const long n,const char *N,double u=0.0):Employee(n,*N){}
错误的这里说没有匹配构造函数实例子
基类是const cahr N 你写的是const char * 当然不match。
Employee(const long n,const char N){number=n,*name=*N;};
基类这里也写错了
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
Employee的构造函数参数long和char
但是manager的前两个参数确实long和char*类型,然后你可能认为在第二个参数加个*N就等于char了,其实这是不正确的,你可以N[0]或者坐下合理的转换将char*转换为父类能接受的char类型。
ps:这种设计和写法见的相对比较少,一般来说最好保持父类和子类的参数一致性,不一致情况最好做好转换工作
长风秋雁
TA贡献1757条经验 获得超7个赞
你用的啥编译器? C++ 11 才有构造函数继承。
我假设你用的是 C++ 11,我还得假设你的 Employee::name 在赋值前已经分配了内存(虽然与语法错误无关),在这两个假设前提下,你的 Employee::Employee 有语法错误,错误的语句是:*name=*N,应该为 *name = N。
- 3 回答
- 0 关注
- 772 浏览
添加回答
举报
0/150
提交
取消