首页 新闻 会员 周边

关于C++这个继承构造函数怎么写

0
悬赏园豆:200 [已解决问题] 解决于 2015-07-03 13:44

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) ;

大海里的大海的主页 大海里的大海 | 初学一级 | 园豆:6
提问于:2015-07-03 13:16
< >
分享
最佳答案
0
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;};

基类这里也写错了

收获园豆:190
请叫我头头哥 | 大侠五级 |园豆:9382 | 2015-07-03 13:43
其他回答(2)
0

Employee的构造函数参数long和char

但是manager的前两个参数确实long和char*类型,然后你可能认为在第二个参数加个*N就等于char了,其实这是不正确的,你可以N[0]或者坐下合理的转换将char*转换为父类能接受的char类型。

 

ps:这种设计和写法见的相对比较少,一般来说最好保持父类和子类的参数一致性,不一致情况最好做好转换工作

收获园豆:5
visonme | 园豆:1674 (小虾三级) | 2015-07-03 13:25
0

你用的啥编译器? C++ 11 才有构造函数继承。

我假设你用的是 C++ 11,我还得假设你的 Employee::name 在赋值前已经分配了内存(虽然与语法错误无关),在这两个假设前提下,你的 Employee::Employee 有语法错误,错误的语句是:*name=*N,应该为 *name = N。

收获园豆:5
Launcher | 园豆:45045 (高人七级) | 2015-07-03 13:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册