用cpp类的前置声明来解决两个类互相循环调用问题

技术分享 2021-03-31 15:08:34

一般一个程序类这样的:


一个通用的主控类,比如叫 Main,下面多个模块类:A,B,C,一共四个。


A,B,C 类的头文件都被 Main 的头文件 include,然后构造函数初始化 为 a,b,c.  Main类中就可以用 this->a  调用模块类的方法。


现在 A,B,C 这些下属模块类也要调用 Main的功能怎么办,也在头文件中包含 Main 吗?这样互相包含头文件可以吗?

不行!


这就要用到 类的前置声明:


A.h 文件:


class Main; //只是一个前置空声明

class A{

   Main * parent;   //没有包含main.h,也能造一个叫Main的指针啦

}


A.cpp 文件:

#include "main.h"  //cpp文件调用具体main头文件,毕竟要操作具体main的方法

这时候你的ide已经能够调用到 Main Class 的方法了,但是运行时会出错,毕竟parent还是个空壳,只需要用构函数传入再赋值就行了




咨询小瓶科技
咨询我们
顶部