首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个关于多重继承的小疑点。

2012-03-31 
一个关于多重继承的小问题。。。#include iostream#include stringusing namespace stdclass Teacher{Te

一个关于多重继承的小问题。。。
#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);

热点排行