注册 登录
编程论坛 C++教室

[求助]请教一个继承和组合的问题

小四 发布于 2007-11-09 20:40, 599 次点击

#include <string>

#include <iostream>

using namespace std;

class Teacher{
public :
Teacher(string nam,int a,char s,string tit);

void display();
protected :
string name;
int age;
char sex;
string title;

};

Teacher::Teacher(string nam,int a,char s,string tit):

name(nam),age(a),sex(s),title(tit){}

void Teacher::display(){
cout<<"name"<<name<<endl;
cout<<"age"<<age<<endl;
cout<<"sex"<<sex<<endl;
cout<<"title"<<title<<endl;


}

class Cadre{
public :
Cadre(string nam,int a,char s,string p);

void display();
protected :
string name;
int age;
char sex;
string post;
};


Cadre::Cadre(string nam,int a,char s,string p):
name(nam),age(a),sex(s),post(p){}
void Cadre::display(){
cout<<"name"<<name<<endl;
cout<<"age"<<age<<endl;
cout<<"sex"<<sex<<endl;
cout<<"post"<<post<<endl;


}

class Person : public Teacher,public Cadre
{
public :
Person(string nam,int a,char s , string tit,string p ,float w );
void show ();
private :
float wage;

};

Person::Person(string nam,int a,char s,string t,string p,float w):

Teacher(nam,a,s,t),Cadre(nam,a,s,p),wage(w){}

void Person::show(){
Teacher::display();
cout<<"post :"<<Cadre::post<<endl;
cout<<"wages :"<<wage<<endl;

}
int main(){
Person tg("wang",24,'f',"assistant","professor");
tg.show();

return 0;


}



编译后提示:

Compiling...
09.cpp
e:\exercise\391\09.cpp(78) : error C2661: 'Person::Person' : no overloaded function takes 5 parameters
Error executing cl.exe.

09.obj - 1 error(s), 0 warning(s)

该如何修改?谢谢各位达人

3 回复
#2
cz5223212007-11-09 20:48
你的构造函数有六个参数,而你调用的时候只有五个参数呀!而且你并没有设置默认的参数值,所以不对!
#3
海子星竹2007-11-09 22:07
同意
自己写的构造函数
怎么还会把参数个数弄错!!
#4
小四2007-11-09 22:15
嗯嗯 谢谢LS&LSS 发万帖 没多久 再看一遍就发现了- -||||

主函数那部分是随手编的...
1