C++类的相互关联

方法

  • 其中一个类的hpp,cpp都正常写,也就是hpp引用另一个类,cpp引用自己的hpp

  • 另一个类,hpp中声明关联类,cpp中引用关联类

示例

/* Teacher.hpp */
#ifndef Teacher_hpp
#define Teacher_hpp

#include <stdio.h>
#include "Student.hpp"

class Teacher {
public:
    Student * students;
};

#endif /* Teacher_hpp */
/* Teacher.cpp */
#include "Teacher.hpp"
/* Student.hpp */
#ifndef Student_hpp
#define Student_hpp

#include <stdio.h>
//#include "Teacher.hpp"

class Teacher;

class Student {
public:
    int number;
    Teacher * teacher;
    Teacher * getTeacher();
};

#endif /* Student_hpp */
/* Student.cpp */
#include "Teacher.hpp" // 只需要导入关联类的头文件,因为里面包含Student.hpp
//#include "Student.hpp"

Teacher * Student::getTeacher() {
    return teacher;
}
/* main.cpp */
#include <iostream>
#include <stdio.h>
#include "Teacher.hpp"
#include "Student.hpp"

using namespace std;

int main() {
    // 随便做点儿什么
    Teacher teacher;
    Student students[10];
    teacher.students = students;
    
    for (int i = 0; i < sizeof(students) / sizeof(Student); i++) {
        teacher.students[i].number = i;
        teacher.students[i].teacher = &teacher;
        cout << i << endl;
    }
    
    cout << sizeof(students) << endl;

    return 0;
}
阅读 1.2k

推荐阅读
人工智能之路
用户专栏

一只笨鸟的人工智能之路

5 人关注
25 篇文章
专栏主页