一道派生类的构造函数问题
//定义一个大学生类Graduate,私有数据成员:姓名,学号,校名,
//并为它定义带参数的构造函数、拷贝构造函数、析构函数和
//输出数据成员值的print( )公有成员函数,另定义研究生类Postgraduate,
//它以公有继承方式派生于类Graduate,新增加"研究方向、导师名"两个私有数据成员,
//并定义带参数的构造函数,拷贝构造函数、析构函数和输出研究生数据的print( )公有成员函数,
//另外,要求学号自动增加,且Graduate和Postgraduate的学号起始值不同。
//在主函数中定义派生类对象进行测试。(字符串用char*表示)
#include<iostream.h>
#include<string.h>
class Graduate
{
public:
Graduate(char *gname,char *gnumber,char *guniversity);
void print();
void setname(char *pname)
{
strcpy(name,pname);
}
char* getname()
{
return name;
}
Graduate(const Graduate &p);
~Graduate();
private:
char *name;
char *number;
char *university;
};
Graduate::Graduate(char *gname,char *gnumber,char *guniversity)
{
name=new char[10];
strcpy(name,gname);
number=new char[10];
strcpy(number,gnumber);
university=new char[20];
strcpy(university,guniversity);
}
void Graduate::print()
{
cout<<" your name:"<<name<<endl;
cout<<" your number:"<<number<<endl;
cout<<" your university:"<<university<<endl;
}
Graduate::Graduate(const Graduate &p)
{
name=new char[strlen(p.name)+1];
strcpy(name,p.name);
number=new char[strlen(p.number)+1];
strcpy(number,p.name);
university=new char[strlen(p.university)+1];
strcpy(university,p.university);
}
Graduate::~Graduate()
{
delete[] name;
delete[] number;
delete[] university;
}
class Postgraduate:public Graduate
{
public:
Postgraduate(char *gname,char *gnumber,char *pdirection,char *ptutor):Graduate(gname,gnumber)
{
direction=new char[20];
strcpy(direction,pdirection);
tutor=new char[10];
strcpy(tutor,ptutor);
}
void print();
// Postgraduate(const Postgraduate &k0);
~Postgraduate();
private:
char *direction;
char *tutor;
};
void Postgraduate::print()
{
cout<<" your direction:"<<direction<<endl;
cout<<" your tutor:"<<tutor<<endl;
}
/*
Postgraduate::Postgraduate(const Postgraduate &k0)
{
setname(k0.getname);
number=new char[strlen(pnumber)+1];
strcpy(number,pnumber);
direction=new char[strlen(k0.direction)+1];
strcpy(direction,k0.direction);
tutor=new char[strlen(k0.tutor)+1];
strcpy(tutor,k0.tutor);
}
*/
Postgraduate::~Postgraduate()
{
delete[] direction;
delete[] tutor;
}
void main()
{
char name[10];
char number[10];
char university[20];
char direction[20];
char tutor[10];
cout<<"please input your name:"<<endl;
cin>>name;
cout<<"please input your number:"<<endl;
cin>>number;
cout<<"please input your university:"<<endl;
cin>>university;
Graduate b(name,number,university);
b.print();
cout<<"please input your name:"<<endl;
cin>>name;
cout<<"please input your number:"<<endl;
cin>>number;
cout<<"please input your direction:"<<endl;
cin>>direction;
cout<<"please input your tutor:"<<endl;
cin>>tutor;
Postgraduate a(name,number,direction,tutor);
a.print();
}
在vc6.0中编译出错:
Cpp3-1.cpp(71) : error C2661: 'Graduate::Graduate' : no overloaded function takes 2 parameters
哪位大侠知道怎么回事,怎么解决,幸苦你了。