C++头文件相互包含问题解决方法

在某些应用场合,会发生两个头文件之间相互包含,导致头文件间无限死循环包含,编译无法通过。

解决方法其实很简单,在其中一方的源码文件包括头文件即可。但这个“其中一方”有点讲究,最好在设计原则上属于特殊的一方。

下面是例子:

//Proc1.h
class Proc1{
 
public:
    Proc1();
    ~Proc1();
    
    void func();
 
};
 
//Proc1.cpp
include "Proc1.h"
include "ProcMgr.h"  //在这里包含
 
void Proc1::func()
{
    ProcMgr::getInstance()->switchProc();
}
 
//ProcMgr.h
include "Proc1.h"
class ProcMgr{
public:
    static ProcMgr* getInstance();
    void switchProc();
    
protected:
    ProcMgr();
    ~ProcMgr();
 
    Proc1 proc1;
    static ProcMgr* Instance;
 
};
 
//ProcMgr.cpp
ProcMgr* ProcMgr::Instance = NULL;
 
ProcMgr* ProcMgr::getInstance();
{
    if (NULL == Instance)
    {
        Instance = new ProcMgr();
    }
    return Instance;
}

当然,出现相互包括的情况,设计上需要反查下,以避免后面更麻烦的耦合出现!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值