一个关于多重继承的小问题。。。
#include <iostream>
#include <string>
using namespace std;
class Teacher
{
Teacher(string nam,int a,string t)
{
name=nam;
age=a;
title=t;
}
void display()
{
cout<<"name:"<<name<<endl;
cout<<"age:"<<age<<endl;
cout<<"title:"<<title<<endl;
}
protected:
string name;
int age;
string title;
};
class Student
{
public:
Student(char nam[],char s,float sco)
{
strcpy(name1,nam);
sex=s;
score=sco;
}
void display1()
{
cout<<"name:"<<name1<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"score:"<<score<<endl;
}
protected:
string name1;
char sex;
float score;
};
class Graduate:public Teacher,public Student
{
public:
Graduate(string nam,int a,char s,string t,float sco,float w):
Teacher(name,a,t),Student(nam,s,sco),wage(w){}
void show()
{
cout<<"name:"<<name<<endl;
cout<<"age:"<<age<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"title:"<<title<<endl;
cout<<"score:"<<score<<endl;
cout<<"wage:"<<wage<<endl;
}
private:
float wage;
};
int main()
{
Graduate grad1("Wang-li",24,'f',"assistant",89.5,1234.5);
grad1.show();
return 0;
}
这是个超级简单的多重继承,编译后,那个strcpy一行有错,请问,怎么会这样呢?我看了其他书上是这样写的,自己就稍微变了点搬上来的,但结果是错了,真是实践出真知哦!大侠们帮帮小弟哦!谢谢!
[解决办法]
strcpy(&name1[0],nam);
[解决办法]
#include <iostream>
#include <string>
using namespace std;
class Teacher
{
public:
Teacher(string nam,int a,string t)
{
name=nam;
age=a;
title=t;
}
void display()
{
cout <<"name:" <<name <<endl;
cout <<"age:" <<age <<endl;
cout <<"title:" <<title <<endl;
}
protected:
string name;
int age;
string title;
};
class Student
{
public:
//Teacher和Graduate都定义为string,这里也定义为string吧
Student(string nam,char s,float sco)
{
name1=nam;
//strcpy(name1,nam);
sex=s;
score=sco;
}
void display1()
{
cout <<"name:" <<name1 <<endl;
cout <<"sex:" <<sex <<endl;
cout <<"score:" <<score <<endl;
}
protected:
string name1;
char sex;
float score;
};
class Graduate:public Teacher,public Student
{
public:
Graduate(string nam,int a,char s,string t,float sco,float w):
Teacher(nam,a,t),Student(nam,s,sco),wage(w){}
void show()
{
cout <<"name:" <<name <<endl;
cout <<"age:" <<age <<endl;
cout <<"sex:" <<sex <<endl;
cout <<"title:" <<title <<endl;
cout <<"score:" <<score <<endl;
cout <<"wage:" <<wage <<endl;
}
private:
float wage;
};
int main()
{
Graduate grad1("Wang-li",24,'f',"assistant",89.5,1234.5);
grad1.show();
return 0;
}
name:Wang-li
age:24
sex:f
title:assistant
score:89.5
wage:1234.5
Press any key to continue
[解决办法]
建议将 Teacher类中的name格式改为char*形式。毕竟我个人认为strcpy(char* m,char*n);