#include<iostream>
using namespace std;
#include<string>
class Students;
class Teachers
{
private:
Students* pStudents;
public:
string m_Name;
string m_ID;
void CheckHomework()
{
cout << "正在检查" << pStudents->m_Homework << endl;
}
};
class Students
{
friend Teachers;
public:
Students():m_Homework("作业")
{
}
string m_Name;
string m_StudyNumber;
private:
string m_Homework;
};
void test01()
{
Teachers tr1;
tr1.CheckHomework();
}
int main()
{
test01();
system("pause");
return 0;
}
#include <iostream>
using namespace std;
#include <string>
class Students;
class Teachers
{
private:
Students *pStudents;
public:
string m_Name;
string m_ID;
// 1. 这些方法用了Students的具体方法, 虽然前面提前申明了Students, 但是没有具体定义是不行的, 所以需要放在后面实现
void CheckHomework();
Teachers();
~Teachers();
};
class Students
{
// 2. 申明友元类需要用friend class, 非必须
friend class Teachers;
public:
Students() : m_Homework("作业")
{
}
string m_Name;
string m_StudyNumber;
private:
string m_Homework;
};
// 3. Hint! Teachers的一些方法放在这里实现了, 即Students的定义之后
void Teachers::CheckHomework()
{
cout << "正在检查" << pStudents->m_Homework << endl;
}
Teachers::Teachers(){
pStudents = new Students();
}
Teachers::~Teachers(){
delete pStudents;
pStudents = nullptr;
}
void test01()
{
Teachers tr1;
tr1.CheckHomework();
}
int main()
{
test01();
system("pause");
return 0;
}
有三处注释,题主可以看看。
因为解析的时候不知道对应的实体
#include<iostream>
using namespace std;
#include<string>
class Students;
class Teachers
{
private:
Students* pStudents;
public:
string m_Name;
string m_ID;
void CheckHomework();
};
class Students
{
friend Teachers;
public:
Students():m_Homework("作业")
{
}
string m_Name;
string m_StudyNumber;
private:
string m_Homework;
};
void Teachers::CheckHomework()
{
cout << "正在检查" << pStudents->m_Homework << endl;
}
void test01()
{
Teachers tr1;
tr1.CheckHomework();
}
int main()
{
test01();
system("pause");
return 0;
}