永发信息网

C++ 一个类的成员函数作为另一个类的友元函数,为什么错了?

答案:3  悬赏:30  手机版
解决时间 2021-02-10 23:26
  • 提问者网友:溺爱和你
  • 2021-02-10 19:56
//问题见注释

#include

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
cout
}

void Teacher::printStudentInTeacher(Student &s)

{

cout
cout
}
最佳答案
  • 五星知识达人网友:逃夭
  • 2021-02-10 20:21
worker(){}默认构造函数,其作用是把类的私有成员变量初始化为string类的默认值。
也就是空字符串。

~worker(){}是析构函数,其作用是在超出对象的作用域后,将对象所占的内存给释放掉。
避免物理内存被用尽
全部回答
  • 1楼网友:骨子里都是戏
  • 2021-02-10 22:19
#include using namespace std; class Student; class Teacher { public: void printStudentInTeacher(Student &s); }; class Student { //public: friend void printStudent(Student grade); friend void Teacher::printStudentInTeacher(Student &s); private: int grade; }; void printStudent(Student s) { coutcout } void Teacher::printStudentInTeacher(Student &s) { cout cout } 顺序应该是这样子的
  • 2楼网友:等灯
  • 2021-02-10 21:49
成员函数是可以设定为其他类的友元的,代码改成这样就行了; class a; class b { public: void show(a & t); }; class a { int i; public: friend void b::show(a & t); }; void b::show(a &t) { cout << t.i << endl; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯