关于C++ 赋值运算符重载为成员函数的问题,菜鸟求助~
我把 = 重载为Teacher类的成员函数,希望实现的功能是将Student类的对象中的数据成员的值赋给Teacher类的对象(假设这个学生当上老师了,呵呵) 我已经在Student类中将&teacher Teacher::operator =(Student&)声明为友元函数了,可为什么编译的时候还是提示我,不能访问Teacher中的数据成员?请问这是什么原因呢
#include<iostream>
#include<string>
using namespace std;
class Teacher;
class Student
{
public:
Student();
Student(string n,int a,int nb,char sx):name(n),age(a),number(nb),sex(sx){}
friend ostream& operator << (ostream&,Student&);
friend Teacher& Teacher::operator =(Student &);
private:
string name;
int age;
int number;
char sex;
};
ostream& operator <<(ostream& output,Student& s)
{
cout<<"Student name :"<<s.name<<endl<<"age :"<<s.age<<endl<<"number :"<<s.number<<endl<<"sex :"<<s.sex<<endl;
return output;
}
class Teacher
{
public:
friend ostream & operator <<(ostream&,Teacher&);
Teacher & operator =(Student &);
private:
string name;
char sex;
int age;
int number;
};
ostream& operator <<(ostream& output,Teacher& t)
{
cout<<"Teacher name :"<<t.name<<endl<<"age :"<<t.age<<endl<<"number :"<<t.number<<endl<<"sex :"<<t.sex<<endl;
return output;
}
Teacher& Teacher::operator = (Student & s)
{
name=s.name;
age=s.age;
sex=s.sex
}
int main()
{
Student st1("Jack",22,001,'M'),st2("Mary",21,002,'F');
Teacher tc1,tc2;
tc1=st1;
tc2=st2;
cout<<st1<<st2<<tc1<<tc2<<endl;
return 0;
}