当前位置: 首页 > news >正文

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

相关文章:

  • ubuntu14.04 install flow.
  • 初始化顺序与字节对齐
  • 【转】How to resolve ORA-19706 error when select from dblink
  • 无线网络安全标准
  • 2)队列
  • 刚开通,记录一下
  • excel怎么固定第一行
  • zsh解决perl: warning: Setting locale failed.
  • svn checkout的时候, 不要将以此目录为工程的netbeans等ide打开
  • Error: ShouldNotReachHere()
  • exports和module.exports
  • apk当安装程序将文件复制到手机自带的指定文件夹
  • 接口测试培训:HTTP协议基础 1
  • 动态计算UITableViewCell高度详解
  • hibernate(四)ID生成策略
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • export和import的用法总结
  • Java反射-动态类加载和重新加载
  • leetcode386. Lexicographical Numbers
  • Map集合、散列表、红黑树介绍
  • tab.js分享及浏览器兼容性问题汇总
  • Webpack 4 学习01(基础配置)
  • 机器学习中为什么要做归一化normalization
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 批量截取pdf文件
  • 如何解决微信端直接跳WAP端
  • 数据仓库的几种建模方法
  • 小李飞刀:SQL题目刷起来!
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 鱼骨图 - 如何绘制?
  • 原生Ajax
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • NLPIR智能语义技术让大数据挖掘更简单
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 说说我为什么看好Spring Cloud Alibaba
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #stm32整理(一)flash读写
  • $.ajax()参数及用法
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (MATLAB)第五章-矩阵运算
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (排序详解之 堆排序)
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .aanva
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET Core中的去虚