//问题见注释
#include <iostream>
using namespace std;
class Teacher; //这里编译不成功,提示incomplete type 'Teacher' named in nested name specifier
class Student
{
friend void printStudent(Student grade);
friend void Teacher::printStudentInTeacher(Student &s);
public:
private:
int grade;
};
class Teacher
{
public:
void printStudentInTeacher(Student &s);
};
void printStudent(Student s)
{
cout<<"outer function print:";
cout << s.grade << endl;
}
void Teacher::printStudentInTeacher(Student &s)
{
cout <<"Teacher print:";
cout << s.grade << endl;
}
顺序应该是这样:
//class Teacher; //这里编译不成功,提示incomplete type 'Teacher' named in nested name specifier