读书人

请问关于有友员的一个有关问题再现等

发布时间: 2012-03-01 10:25:46 作者: rapoo

请教关于有友员的一个问题,再现等
我用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;一切都可以了~

读书人网 >C++

热点推荐