一道关于C++类型转换问题(类类型之间的转换)

题目定义一个teacher(教师)类和一个student(学生)类,二者有一份数据成员是相同的,例如num,name,sex。编写程序,将一个student对象(学生)转... 题目定义一个teacher(教师)类和一个student(学生)类,二者有一份数据成员是相同的,例如num,name,sex。编写程序,将一个student对象(学生)转换为teacher(教师)类,只将以上3个相同的数据成员移植过去。可以设想为:一个学生大学毕业了,留校担任教师,他原有的部分数据对现在的教师身份来说仍然是有用的,应当保留并成为其教师的数据的一部分。

VC6.0下编译 有N多错误、但找半天说什么分号没加,哪里有问题啊。
#include"iostream.h"
#include<string>
class Student
{
public:
Student(long num,string name,string sex):num(num),name(name),sex(sex){}

private:
long num;
string name;
string sex;
};

class Teacher
{
public:
friend ostream& operator<<(ostream& output,Teacher t);
operator Teacher(Student s){num=s.num;name=s.name;sex=s.sex;}
private:
long num;
string name;
string sex;
};

ostream& operator<<(ostream& output,Teacher t)
{
output<<"I'm a teacher"<<t.name<<t.num<<t.sex;
return output;
}

int main(int argc, char* argv[])
{
Student s(123,"xiaoming","man");
Teacher(s);
cout<<s;
return 0;
}
展开
 我来答
jimmy14888888
2015-08-09 · TA获得超过1340个赞
知道小有建树答主
回答量:550
采纳率:80%
帮助的人:347万
展开全部
#include <iostream> // 你用VC6太旧了我用新的头文件,你还用VC6的话就改回"iostream.h"吧
#include <string>
using namespace std; // 使用命名空间

// 调整声明位置
class Teacher
{
public:
friend class Student; // 设置友元,除非你用某种途径得到name,sex什么的
friend ostream& operator<<(ostream& output, Teacher t);
private:
long num;
string name;
string sex;
};

class Student
{
public:
Student(long num, string name, string sex) :num(num), name(name), sex(sex) {}
// 转换应该是在Student里面
operator Teacher() { Teacher t; t.num = num; t.name = name; t.sex = sex; return t; }
private:
long num;
string name;
string sex;
};

ostream& operator<<(ostream& output, Teacher t)
{
output << "I'm a teacher" << t.name << t.num << t.sex;
return output;
}

int main(int argc, char* argv[])
{
Student s(123, "xiaoming", "man");
cout << Teacher(s); // 强制转换直接输出
return 0;
}

运行效果:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式