VC++开发中解决头文件相互包含问题的方法

本文详细介绍了在VC++开发过程中遇到头文件循环引用的问题,即类A和类B相互包含导致的超前引用错误。提出了三种解决方案:1) 使用类声明,通过在头文件中声明对方类;2) 利用全局变量避免超前引用;3) 使用基类指针作为引用。作者推荐使用第一种方法,并强调在声明时只能定义引用或指针,不能定义变量或函数参数。
摘要由CSDN通过智能技术生成
最近在做毕业设计时遇到一个问题困扰我很久,那就是头文件互相包含的问题,从网上搜了一下,找到很多有益的启示,总结一下。  

    所谓超前引用是指一个类型在定义之前就被用来定义变量和声明函数。
    一般情况下,C/C++要求所有的类型必须在使用前被定义,但是在一些特殊情况下,这种要求无法满足,例如,在类CMyView中保留了一个非模式对话框对象指针,该对象用于显示/修改一些信息。为了实现对话框"应用"按钮,把对话框做的修改立刻更新到view界面上,为此,需要在对话框类中需要保存view类的指针,这样定义关系就变成如下的代码:
   #ifndef __MYVIEW_H__
   #define __MYVIEW_H__
   //这是view类的头函数
   #include "MyDialog.h"
   class CMyView::public CView
   {
   protected:
       CMyDialog * pDlg;
       //这里是其他定义
   };
   #endif
  
   #ifndef __MYDIALOG_H__
   #define __MYDIALOG_H__
   //这是对话框类的定义
   #include "MyView.h"
   class CMyDialog::public CDialog
   {
       protected:
           CMyView * pView;
           //其他定义
   };
   #endif
  
    从编译器角度看,编译MyDialog

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值