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

不明白关于友员的一个有关问题,望各位赐教

2012-02-21 
不明白关于友员的一个问题,急,望各位赐教我用vc编译的,其中有个语句不明白.用***标出了,错误也在***中标出

不明白关于友员的一个问题,急,望各位赐教
我用vc编译的,其中有个语句不明白.用***标出了,错误也在***中标出了.为什么把后面标号为9的句子换成friend   class   Teacher;就可以了

#include   "stdafx.h "
#include   "iostream "
#include   "string "
using   namespace   std;

class   Student;
class   Teacher;
class   Student{
  int   grades;
          public:
Student(){grades=0;}
Student(int   g){grades=g;}
void   getinfo(){cout < < "   成绩 " < <grades < <endl;}
friend   void   Teacher::assigngrades(Student&   ss);//9
              ********************************************************
              错误上面语句//error   C2027:   使用了未定义类型“Teacher”
              ********************************************************
};
class   Teacher{
        Student   s;
int   num;
        public:
Teacher(){num=113206;}
void   assigngrades(Student&   ss);
void   getinfo(){cout < <num < <endl;}
};
void   Teacher::assigngrades(Student&   ss){ss.grades=80;}
********************************************************
错误上面语句//error   C2248:   “Student::grades”:   无法访问   private   成员(在“Student”类中声明)
********************************************************
int   main(int   argc,   _TCHAR*   argv[])
{    
Student   s1;
Teacher   t1;
t1.assigngrades(s1);
s1.getinfo();
        return   0;
}


[解决办法]
********************************************************
错误上面语句//error C2027: 使用了未定义类型“Teacher”
********************************************************
这个错因为前面只有一个前置定义了Teacher,没有定义其成员函数,因而无法赋予还没有定义东西友员的权力
用friend class teacher;就可以了
只要有一个前置定义的teacher就可以赋予其友员的资格

热点排行