用c++实现:学校(School)拥有多名教师(Teacher)(提示:可以使用指针数组或者指向指针的指针),每名教师知道自己所在的学校。
时间: 2023-07-20 15:18:54 浏览: 43
以下是用 C++ 实现的代码:
```c++
#include <iostream>
using namespace std;
class School; // 前向声明
class Teacher {
private:
string name;
School *school;
public:
Teacher(string n, School *s) {
name = n;
school = s;
}
string getName() {
return name;
}
void setName(string n) {
name = n;
}
School* getSchool() {
return school;
}
void setSchool(School *s) {
school = s;
}
};
class School {
private:
string name;
Teacher **teachers;
int numTeachers;
public:
School(string n, int num) {
name = n;
numTeachers = num;
teachers = new Teacher*[numTeachers];
for (int i = 0; i < numTeachers; i++) {
teachers[i] = NULL;
}
}
string getName() {
return name;
}
void setName(string n) {
name = n;
}
int getNumTeachers() {
return numTeachers;
}
void setNumTeachers(int num) {
numTeachers = num;
}
Teacher** getTeachers() {
return teachers;
}
void setTeacher(int index, Teacher *t) {
teachers[index] = t;
}
};
int main() {
School *school = new School("ABC School", 3);
Teacher *teacher1 = new Teacher("Tom", school);
Teacher *teacher2 = new Teacher("Jack", school);
Teacher *teacher3 = new Teacher("Mary", school);
school->setTeacher(0, teacher1);
school->setTeacher(1, teacher2);
school->setTeacher(2, teacher3);
for (int i = 0; i < school->getNumTeachers(); i++) {
cout << school->getTeachers()[i]->getName() << " works at " << school->getName() << endl;
}
return 0;
}
```
这个程序定义了两个类:`School` 和 `Teacher`。其中,`Teacher` 类包含了教师的姓名和所在的学校,`School` 类包含了学校的名称和教师数组,以及与教师相关的一些函数。在 `main()` 函数里,我们创建了一个学校和三个教师,并将这三个教师添加到学校中。最后,我们遍历教师数组,输出每个教师的姓名和所在的学校。