请教关于有友员的一个问题,再现等
我用vc编译的,错误在代码中指出
#include "stdafx.h "
#include "iostream "
#include "string "
using namespace std;
class Student;
class Teacher;
class Student{
int hours;
int grades;
string name;
public:
Student(){hours=0;grades=0;name= "zhangsan ";}
Student(int h,int g,string n){hours=h;grades=g;name=n;}
void getinfo(){cout < <name < < "学时 " < <hours < < " 成绩 " < <grades < <endl;}
friend void Teacher::assigndrade(Student& ss); // error C2027: 使用了未定义类型“Teacher”
friend void Teacher::assighours(Student& ss); // error C2027: 使用了未定义类型“Teacher”
};
class Teacher{
Student s;
int num;
public:
Teacher(){num=113206;}
void assigndrade(Student& ss);
void assighours(Student& ss);
void getinfo(){cout < <num < <endl;s.getinfo();}
};
void Teacher::assigndrade(Student& ss){ss.grades=80;}// error C2248: “Student::grades”: 无法访问 private 成员(在“Student”类中声明)
void Teacher::assighours(Student& ss){ss.hours=216;}// error C2248: “Student::grades”: 无法访问 private 成员(在“Student”类中声明)
int main(int argc, _TCHAR* argv[])
{
Student s1;
s1.getinfo();
Teacher t1;
t1.assighours(s1);
t1.getinfo();
return 0;
}
[解决办法]
friend void Teacher::assigndrade(Student& ss); // error C2027: 使用了未定义类型“Teacher”
friend void Teacher::assighours(Student& ss); // error C2027: 使用了未定义类型“Teacher”
这里改成
friend class Teacher;一切都可以了~